【问题标题】:Is there a SQL solution for Hypergeometric Distribution for a finite set?有限集的超几何分布是否有 SQL 解决方案?
【发布时间】:2020-04-22 13:35:45
【问题描述】:

我正在 Microsoft Excel 中浏览 HYPGEOM.DIST 的等效 SQL 实现。我已经探索了使用从 1 到 N (1...N) 的分布来播种阶乘表的选项,但我正在寻找其他选项。

Given:

x = sample_s
n = number_sample
M = population_s
N = number_pop

参考 Excel 功能: https://support.office.com/en-us/article/hypgeom-dist-function-6dbd547f-1d12-4b1f-8ae5-b0d9e3d22fbf

【问题讨论】:

  • 请提供示例数据和期望的结果——作为问题中的文本表。您还应该解释“超几何分布”的含义。
  • 这里有可以帮助你的花絮stackoverflow.com/questions/60709096/…

标签: sql sql-server distribution factorial hyper


【解决方案1】:

您可以使用您最熟悉的任何技术为您需要的任何范围预先计算阶乘,并将它们存储在单独的表中。

我认为其余的应该是微不足道的。

编辑:再想一想,我不确定您打算如何超越您已经遇到的限制。 170! ~= 7.25741562E+307,根据documentation,可以存储为float的最大值为1.79E+308。似乎 SQL Server 并不真正适合您的任务;您将不得不在其他地方寻找处理(和存储)大量数字的系统。

考虑到Stirling's formula 的原始形式实际上是对数的,这可能会求助于对数而不是实际值的计算。然而,这需要将所有这些公式重写为它们的对数形式。这涉及到相当多的数学,我个人的知识甚至不足以判断它是否真的可以实现。但这并不意味着它应该阻止你尝试:)

【讨论】:

  • 谢谢罗杰!很好的建议;这实际上也是我的预感,但我担心的是播种所有数据会很痛苦(在我们的案例中,每次部署),你什么时候停止(100万 - 如果用户想要使用人口规模200万?)?
  • 是的,罗杰,使用对数是很常见的计算这些表达式的方法,甚至还有专门的函数(欧拉伽玛函数的对数),详情请参阅stackoverflow.com/questions/60709096/…
  • @RogerWolf 最终表明我们在 SQL 之外进行计算!谢谢您的帮助。你的答案最适用。
猜你喜欢
  • 2019-09-21
  • 1970-01-01
  • 2022-08-05
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多