加權比方說,我有ň對象的集合,而且每個對象都有與之相關聯的排名,而這些排名通過ň對應的整數值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