生成 N 个随机数,其总和为常数 K - Excel

问题描述 投票:0回答:4

如何在 Excel 中生成这些数字。

我必须生成 8 个随机数,其总和始终为 320。我需要大约 100 组左右。 http://en.wikipedia.org/wiki/User:Skinnerd/Simplex_Point_Picking。这里解释了两种方法。

或者任何其他方式,以便我可以在 Excel 中完成。

excel random numbers
4个回答
36
投票

您可以使用

RAND()
函数在 A 列中生成
N
数字(在您的例子中为 8)。

然后,在 B 列中,您可以使用以下公式

B1=A1/SUM(A:A)*320
B2=A2/SUM(A:A)*320
等(其中
320
是您感兴趣的总和)。

所以你可以在A1中输入

=RAND()
,然后将其向下拖动到A8。然后在B1中输入
=A1/SUM(A:A)*320
并将其拖至B8。 B1:B8 现在包含 8 个随机数,总和为 320。

输出示例:

enter image description here


3
投票

我在这里玩游戏有点晚了 - 但仅供参考,如果只需要整数那么:

=LET(x_,RANDARRAY(8,1,1,1000000,1),y_,ROUND(x_*320/SUM(x_),0),y_) 

有点类似于上面最喜欢的解决方案,尽管很简约(生成所需数组所需的单个单元格中的公式,没有辅助列)。还解决了微不足道的小数点问题,尽管由于偶尔的舍入误差,您可能需要分配回赤字/盈余,这可能会产生 321 或 319 的总和。可以在公式中使用类似

index(y_,randbetween(1,8))+320-sum(y_)
的内容再次以随机方式执行此操作上面 - 或者求助于臭名昭著的助手 fn..

有人评论说上面最喜欢的解决方案(也是我的,因为它源于类似的概念/方法)并不统一 - 我不确定这是必需的;统一的分布会阻碍随机性(并且可以说要简单得多,因为您只需将相当大的范围划分为不同的八分位数,并遵循此处已经列出的相同方法 - 不确定随机分布应该是任意的/为什么这样的概念/机械地“被迫”采用某种类型的非随机传播..无论如何......我显然没有正确阅读问题(呃)。


3
投票

我在这里玩游戏有点晚了 - 但仅供参考,如果只需要整数那么:

=LET(x_,RANDARRAY(8,1,1,1000000,1),y_,ROUND(x_*320/SUM(x_),0),y_) 

有点类似于上面最喜欢的解决方案,尽管很简约(生成所需数组所需的单个单元格中的公式,没有辅助列)。还解决了微不足道的小数点问题,尽管由于偶尔的舍入误差,您可能需要分配回赤字/盈余,这可能会产生 321 或 319 的总和。可以在公式中使用类似

index(y_,randbetween(1,8))+320-sum(y_)
的内容再次以随机方式执行此操作上面 - 或者求助于臭名昭著的助手 fn..


0
投票

有人可以帮我一个excel公式,生成5个范围从1到10的随机数,并且总和不大于50吗?

© www.soinside.com 2019 - 2024. All rights reserved.