我有一个看起来像这样的表:
项目# |的费用
第1项| 100个
第2项| 150个
第1项| 100个
第3项| 166个
第3项| 166个
第4项| 140个
第1项| 100
是否有可能生成任何这些项目的随机列表,其成本总和等于固定数量?
答案 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.您可以将此列表与您的表格链接。