如何生成一个随机列表,其中相邻的单元格总和等于固定数?

时间:2016-03-29 19:53:18

标签: excel excel-formula

我有一个看起来像这样的表:

项目# |的费用
第1项| 100个
第2项| 150个
第1项| 100个
第3项| 166个
第3项| 166个
第4项| 140个
第1项| 100

是否有可能生成任何这些项目的随机列表,其成本总和等于固定数量?

1 个答案:

答案 0 :(得分:0)

如同这个类似的PHP问题所示:How can I create a specified amount of random values that all equal up to a specified number in PHP?,一旦你根据周围的数字限制任何随机数,你就会影响"真正的随机性"某种程度上来说。您需要确定您的答案中的内容 - 您是否希望表中的每一行的权重与每一行的权重相同?总限制为1-100,您希望第一个值在99和20时具有相同的机会吗?

只有在确定了所需的算法后,才能在Excel中对其进行实际编码。

我的建议是你使用Joe Blow在该链接问题中提出的算法,如下所示:

" (1)选择0和1000之间的9个随机数(2)将9个数字,0和1000,在数组(3)中使用减法对数组(4)进行排序得到10"距离&#34 ;数组值之间。 "

因此,在您的情况下,将此公式放在工作表的A列中,从A2开始并向下拖动:

=RANDBETWEEN(0,100)

在A1中,在此列表上方,put = 0。在列表下方,我们说A10,put = 100。

然后在B1中向下拖动,输入以下公式:

=SMALL($A$1:$A$10,ROW()+1)-SMALL($A$1:$A$10,ROW())

这将为您提供一个数字列表,这些数字均等加权,总计最多为100.您可以将此列表与您的表格链接。