加权比方说,我有ň对象的集合,而且每个对象都有与之相关联的排名,而这些排名通过ň对应的整数值1。随机选择,按职级
现在假设我想从集合中随机选择一个对象。但我不想随便选一个从1到n的数字;相反,我想这样做的目的是让我更有可能在名单上选一个更高的数字(排名接近1)。
提议的解决方案:而不是从1到采摘Ñ,挑从1到米,其中米是一些数显著大于Ñ;然后使用一些映射功能f:[1,m]→[1,n],其将较多数字映射到较高等级而不是较低等级。例如,˚F(1),˚F(2),˚F(3)可能所有返回1,而˚F(m)为映射到Ñ唯一的一个,因此它为三次数更可能得到1比n。希望这是有道理的。
所以我的问题是:如果这似乎是一个合理的算法,什么是合理的功能˚F完成此,并且什么比米/ N将足够大,整数四舍五入并不妨碍人数从永远被采摘?
[在我的特殊情况下,n可能相当大(数以千计),所以像here这样的解决方案对于这种情况不太实际。此外,选择是“与替换”;即我选择一个对象一次然后返回;我不在乎下一次是否立即再次选取它。]
看到这个答案:http://stackoverflow.com/questions/1761626/weighted-random-numbers/1761646#1761646 – 2011-05-03 16:00:12