基本上,我想随机列出正数,其总和等于特定范围。
例如:
生成10个随机正整数,其总和介于25和100之间。
提出excel的公式有点过头了。如果有人有任何建议会非常有用!
答案 0 :(得分:2)
执行此操作的一种方法如下。我将使用您在示例中给出的数字,但该方法很容易推广到任意数字。
在B列中,我从指数分布生成数字。然后在C列中,我通过将每一个除以它们的总和来对它们进行标准化。这样,每个数字变成一个比例(即,它们总计达到100%)。最后,在DI列中取这个比例并乘以 25到100 之间的随机数(更好地考虑在更窄的范围内生成数字,以避免舍入错误 - 我使用的是27和95在我的例子中,也考虑了向上舍入的偏见),并将其四舍五入。总和在单元格D12中。
以下是截图示例:
以下是使用1,000次迭代时这些数字之和的分布:
解决舍入问题的另一个想法是仅在结果数为零时进行舍入:
ROUND(C2*$E$2,0)+(ROUND(C2*$E$2,0) = 0)
这引入了一个小偏差,因为获得1比获得其他数字的可能性略高 - 但最终总和的分布实际上是一致的。
我希望这会有所帮助。
免责声明:我使用this answer作为我的基础。统计理由是this problem is equivalent to generating numbers from a Dirichlet distribution。
答案 1 :(得分:1)
在 A1 至 A9 中输入:
=RANDBETWEEN(2,10)
并在 A10 中输入:
=RANDBETWEEN(7,10)