使用Excel随机生成x个整数,使它们的和为y

3
我参考了这篇帖子来使用=RAND()生成随机的x数字,但它包括所有数字,甚至是带有小数的数字。我只想生成仅为正整数的数字(例如:1、3、50),而不是带有小数的数字。
清晰地说,例如,我要生成: 50个随机的正整数,它们的和为1000 PS:如果你认为这个问题对于Excel的解决方案多余,请让我知道,我将关闭此问题。

这些数字中有任何一个可以是负数吗? - Bathsheba
2
好的,我已经用一种方法回答了,我还添加了数学标签,以防我错过了什么显而易见的东西。 - Bathsheba
1
我可以重复数字吗? - ashleedawg
@ashleedawg 是的,允许重复。 - Dan
1
谢谢@Bathsheba! - Dan
显示剩余3条评论
1个回答

4

我提供了一个比我最初想象的更好的统计特性的解决方案:

将每个数字的上限估计为平均值的两倍。在您的情况下,平均值为20(1000/50),因此上限为39,下限为1。

  1. 使用

    =RAND() * 38 + 1

    生成50个浮点数

  2. 将得到的总和相加,称其为s

  3. 通过乘以1000 / s来重新缩放每个数字,并按正常方式四舍五入结果。(使用ROUND。)

  4. 将它们相加。称之为t

  5. 如果t小于1000,则将1000-t添加到最小的数字。如果大于1000,则从最大的数字中减去t-1000

这应该是近似均匀分布且具有良好平均值的。您可以通过一些随机性的统计测试运行结果,以判断它是否符合您的要求。我的直觉告诉我,它不会比Rand()差太多。


1
很酷的问题。很酷的答案。现在我要整晚都在搞这个了。 :-) - ashleedawg
@ashleedawg:糟糕,我没有看到小字。你需要调整(1)。谢谢指出这一点。让我们一起发布! - Bathsheba
你能提供一个在统计学中使用这个的例子吗?我认为自己是一个数据/统计迷(没有学位或类似的东西,主要是业务指标之类的)。我应该在维基百科上查找什么来学习更多呢? :-) - ashleedawg
@ashleedawg:不是的,+1 是加在最终结果上的。 - Bathsheba
1
@Bathsheba - 明白了。谢谢您的建议。我13岁的孩子今天的数学词汇是... _同余_(他在8年级学习我在12年级才学的知识,所以挑战他越来越困难了!) - ashleedawg
显示剩余9条评论

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