我想产生 100 个正态分布的随机数(μ=10,σ=7),然后为这些数字绘制数量图。
如何在 Excel 2010 中生成具有特定分布的随机数?
还有一个问题:
例如,当我生成 20 个随机数时RANDBETWEEN(Bottom,Top)
,每次重新计算工作表时,这些数字都会发生变化。我怎样才能防止这种情况发生?
我想产生 100 个正态分布的随机数(μ=10,σ=7),然后为这些数字绘制数量图。
如何在 Excel 2010 中生成具有特定分布的随机数?
还有一个问题:
例如,当我生成 20 个随机数时RANDBETWEEN(Bottom,Top)
,每次重新计算工作表时,这些数字都会发生变化。我怎样才能防止这种情况发生?
如果你有 excel 2007,你可以使用
=NORMSINV(RAND())*SD+MEAN
因为2010年excel的功能发生了很大的变化
正如@osknows 在上面的评论中所说(而不是我添加这个的答案),分析包包括随机数生成函数(例如NORM.DIST
,NORM.INV
)来生成一组数字。一个很好的总结链接是http://www.bettersolutions.com/excel/EUN147/YI231420881.htm。
Rand() 确实会生成 0 到 1 之间的随机数的均匀分布,但是 norminv(或 norm.inv)函数将均匀分布的 Rand() 作为输入来生成正态分布的样本集。
关于重新计算:
您可以通过将 , 调整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。
另一种有趣的方法是使用 Box-Muller 方法。这使您可以使用 0 和 1 之间的两个均匀随机分布生成平均值为 0 且标准差 σ (或方差 σ 2)为 1 的正态分布。然后您可以采用此 Norm(0,1) 分布并将其缩放到任何值你想要的平均值和标准差。
这是 excel 中用于正态 (0, 1) 分布的公式:
=SQRT(-2*LN( RAND()))*COS(2 * PI()*RAND())
然后使用此公式将您的正态分布缩放为均值为 10,标准差为 7:
范数(µ=b, σ=a) = a*范数(µ=0, σ 2 =1) + b
这将使 Excel 中的等式:
=7* SQRT(-2*LN( RAND()))*COS(2 * PI()*RAND()) + 10
您可以在en.Wikipedia上阅读有关此 Box-Muller 方程背后的数学的更多信息
请注意,此等式仅在您使用弧度计算余弦函数时才有效。
生成的数字
=NORMINV(RAND(),10,7)
是均匀分布的。如果您希望数字呈正态分布,我猜您将不得不编写一个函数。