给定一个整数列表,例如1, 2, 3, 4
,我知道如何根据重量选择元素。示例项目的概率分别为 10%、20%、30% 和 40%。
有没有一种同样简单的方法可以根据重量的倒数来选择元素?使用这种方法,示例列表将等于 1, 1/2, 1/3, 1/4
(48%, 24%, 16%, 12%) 的加权列表,但是我想避免浮点运算的转换和使用。 (假设所有整数都是正数且非零。)
最佳答案
你可以除以数字' least common multiple由每个数字得到整数比例。
对于 [1, 2, 3, 4]
,这是 12。你的权重是 12/1=12, 12/2=6, 12/3=4, 12/4= 3.
您也可以将它们全部相乘,而不必理会 LCM。数字会更高,但比例相同:24/1=24、24/2=12、24/3=8、24/4=6。
关于algorithm - 如何从反向加权列表中随机选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762569/