62

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

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

还有一个问题:

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

4

8 回答 8

105

NORMINV与一起使用该功能RAND()

=NORMINV(RAND(),10,7)

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


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

在此处输入图像描述

于 2011-06-06T03:28:53.067 回答
6

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

=NORMSINV(RAND())*SD+MEAN

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

于 2014-01-30T23:26:05.713 回答
5

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

于 2011-11-04T14:28:45.427 回答
2

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

于 2016-08-19T14:44:25.560 回答
1

查看关于随机数的 Wikipedia 文章,因为它讨论了使用抽样技术。你可以通过插入这个找到你的正态分布方程

普通发行版的pdf

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

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

于 2011-06-05T08:58:37.703 回答
1

关于重新计算:

您可以通过将 , 调整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

于 2015-09-15T19:57:52.577 回答
0

另一种有趣的方法是使用 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 方程背后的数学的更多信息

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

于 2021-07-04T21:21:02.837 回答
-4

生成的数字

=NORMINV(RAND(),10,7)

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

于 2016-02-22T08:50:28.770 回答