在Excel中生成正态分布的随机数

65

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

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

还有一个问题:

例如,我使用RANDBETWEEN(最小值,最大值)生成20个随机数,当工作表重新计算时,数字会发生变化。如何防止这种情况发生?


5
使用分析工具包-随机数生成。Random Number Generation - user688334
8个回答

113

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

=NORMINV(RAND(),10,7)

为了保持你的随机值集合不变,选择所有值,将其复制,然后将这些值(特殊)粘贴回同一范围内。


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

输入图片说明


9

如果您有Excel 2007,您可以使用

=NORMSINV(RAND())*SD+MEAN

因为2010年Excel的函数有了重大变化。


5

2

Rand()函数生成的随机数是在0到1之间均匀分布的,但norminv(或norm.inv)函数将这个均匀分布的随机数作为输入,生成符合正态分布的样本集。


1

看一下维基百科上关于随机数的文章,它讨论了使用抽样技术。你可以通过将值代入这个方程中来找到正态分布的方程。

pdf for normal distro

(维基百科提供的方程式)

至于第二个问题,进入圆形Office图标下的选项,进入公式,将计算更改为“手动”。这将保持您的工作表不会在每次重新计算公式时进行重新计算。


1

0
另一种有趣的方法是使用Box-Muller方法。这使您可以使用介于0和1之间的两个均匀随机分布生成具有平均值为0和标准偏差σ(或方差σ²)为1的正态分布。然后,您可以将此Norm(0,1)分布缩放到所需的平均值和标准偏差。
以下是在Excel中计算正常(0,1)分布的公式:
= SQRT(-2 * LN(RAND())) * COS(2 * PI() * RAND())
然后,使用此公式将正态分布缩放为平均值为10,标准偏差为7:
Norm(µ=b, σ=a) = a*Norm(µ=0, σ²=1) + b
这将使Excel中的方程式如下:
= 7 * SQRT(-2 * LN(RAND())) * COS(2 * PI() * RAND()) + 10
您可以在en.Wikipedia上阅读更多关于Box-Muller方程背后的数学知识。
请注意,此方程仅在使用弧度计算余弦函数时有效。

据我所知,对于Box-Muller方法,有时需要丢弃样本,这在Excel公式中会很麻烦。 - Michel de Ruiter

-6

通过编程生成的数字

=NORMINV(RAND(),10,7)

是均匀分布的。如果你希望数字呈正态分布,你可能需要编写一个函数。


6
这是100%的错误。如果你还不相信,可以使用这个公式生成500个数字,然后查看数字的直方图。 - Excellll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接