如何从加权列表中选择4个唯一项?
|
因此,我有一个加权项目列表,我想从该列表中选择4个非重复项目。
Item Weight
Apple 5
Banana 7
Cherry 12
...
Orange 8
Pineapple 50
最有效的方法是什么?我最初的尝试是,如果出现一个已经被拣选的项目,则只是重新滚动以选择后续的拣选...但是对于一个很小的清单,这可能会导致大量的重新滚动。
编辑以澄清:
对于上面的示例,忽略水果D到N,总重量为82。因此首先被选中的机会是:
〜6%
B〜8.5%
碳〜14.6%
O〜9.8%
磷〜61%
一旦选择了一个项目,概率将(应该!)改变。
没有找到相关结果
已邀请:
4 个回复
悸翠疮武昏
脚本
输出量
基本策略是将每个水果分配到总范围
的一部分。在第一个循环中,您需要: 苹果-8/20 = 0.0至0.4 橙色-4/20 = 0.4至0.6 香蕉-4/20 = 0.6至0.8 油桃-3/20 = 0.8至0.95 猕猴桃-8/20 = 0.95至1.0 该脚本将遍历列表中的每个项目,并增加一个权重计数器。当它达到包含第一个随机数的范围时,它将选择该项目,将其从列表中删除,然后根据新的总重量重新计算范围并再次运行。
坝硷操
看看是否做得更好。
孝箱捆讨
悸翠疮武昏
(类似这样)。我想您会使用类似的逻辑很快找到下一个随机唯一项。 我敢肯定当然会有更好的解决方案。 编辑:看起来布拉德已经提供了一个.. :)