用Excel和y随机生成x个整数
我指的是使用=RAND()
生成随机x
数字的这篇文章 ,但是它会照顾每个数字,包括那些带有十进制的数字。 我只想产生正整数 (例如1,3,50),而不是那些有十进制的。
例如,为了清楚起见,我想生成:
50个随机正整数,总和为1000
PS :如果你发现Excel解决scheme冗余的这个问题,让我知道,我会closures这个。
我提供了一个解决scheme,它具有比我最初设想的更好的统计特性:
估计每个数字的上限是平均值的两倍。 在你的情况下,平均值是20(1000/50),所以上限是39,因为下限是1。
-
使用生成50个浮点数
=RAND() * 38 + 1
-
总结你得到的总数,称之为
s
-
重新缩放每个数字乘以
1000 / s
, 并以正常方式将结果四舍五入 。 (使用ROUND
。) -
总结一下。 叫它
t
。 -
如果
t
小于1000,则添加1000 - t
到最小的数字。 如果大于1000,则从最大的数字中减去t - 1000
。
这应该是大致均匀分布,并有一个很好的意思。 您可以通过一些统计testing来testing结果的随机性,以判断它是否符合您的要求。 我的直觉告诉我,它不会Rand()
本身更糟糕。