【问题标题】:Generating random numbers with normal distribution in Excel在 Excel 中生成具有正态分布的随机数
【发布时间】:2011-09-08 15:58:26
【问题描述】:

我想产生 100 个正态分布的随机数(μ=10,σ=7),然后为这些数字绘制数量图。

如何在 Excel 2010 中生成具有特定分布的随机数?

还有一个问题:

例如,当我使用RANDBETWEEN(Bottom,Top) 生成 20 个随机数时,每次重新计算工作表时,这些数字都会发生变化。我怎样才能避免这种情况发生?

【问题讨论】:

标签: excel random normal-distribution


【解决方案1】:

NORMINV 函数与RAND() 一起使用:

=NORMINV(RAND(),10,7)

要防止您的一组随机值发生变化,请选择所有值,复制它们,然后将这些值粘贴(特殊)回同一范围内。


样本输出(A 列),使用此公式生成的 500 个数字:

【讨论】:

    【解决方案2】:

    如果你有 excel 2007,你可以使用

    =NORMSINV(RAND())*SD+MEAN
    

    因为2010年excel的功能发生了很大的变化

    【讨论】:

      【解决方案3】:

      正如@osknows 在上面的评论中所说(而不是我添加这个的答案),分析包包括随机数生成函数(例如NORM.DISTNORM.INV)来生成一组数字。一个很好的摘要链接是http://www.bettersolutions.com/excel/EUN147/YI231420881.htm

      【讨论】:

        【解决方案4】:

        Rand() 确实会生成 0 到 1 之间的随机数的均匀分布,但 norminv(或 norm.inv)函数将均匀分布的 Rand() 作为输入来生成正态分布的样本集。

        【讨论】:

          【解决方案5】:

          关于重新计算:

          您可以通过将automatic recalculation 调整为:manual recalculate 来防止您的随机值集在每次进行调整时发生变化。 (重新)计算仅在您按 F9 时完成。或按 F9。

          有关它的一些信息,请参阅此链接(尽管是比当前 2013 更旧的 excel 版本):https://support.office.com/en-us/article/Change-formula-recalculation-iteration-or-precision-73fc7dac-91cf-4d36-86e8-67124f6bcce4

          【讨论】:

            【解决方案6】:

            查看random numbers 上的 Wikipedia 文章,因为它讨论了使用采样技术。你可以通过插入this one 来找到你的正态分布方程

            (来自维基百科的方程式)

            至于第二个问题,进入圆形Office图标下的选项,进入公式,然后将计算更改为“手动”。这将维护您的工作表,并且不会每次都重新计算公式。

            【讨论】:

              【解决方案7】:

              另一种有趣的方法是使用 Box-Muller 方法。这使您可以使用 0 和 1 之间的两个均匀随机分布生成平均值为 0 且标准差 σ(或方差 σ2)为 1 的正态分布。然后您可以采用这个 Norm(0,1 ) 分布并将其缩放到您想要的任何平均值和标准差。

              这是 excel 中正态 (0, 1) 分布的公式:

              =SQRT(-2*LN( RAND()))*COS(2 * PI()*RAND())

              然后使用此公式将您的正态分布缩放为均值为 10,标准差为 7:

              Norm(µ=b, σ=a) = a*Norm(µ=0, σ2=1) + b

              这将在 Excel 中生成方程式:

              =7* SQRT(-2*LN( RAND()))*COS(2 * PI()*RAND()) + 10

              您可以在 en.Wikipedia 上阅读有关此 Box-Muller 方程背后的数学运算的更多信息

              请注意,此等式仅在您使用弧度计算余弦函数时才有效。

              【讨论】:

                【解决方案8】:

                产生的数字

                =NORMINV(RAND(),10,7)
                

                是均匀分布的。如果您希望数字呈正态分布,我猜您将不得不编写一个函数。

                【讨论】:

                • 这是 100% 错误的。如果您不相信,请尝试使用此公式生成 500 个数字,然后查看这些数字的直方图。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-06-22
                • 1970-01-01
                • 1970-01-01
                • 2014-11-06
                • 2011-12-24
                • 2017-04-17
                相关资源
                最近更新 更多