1
我正在設計一個廣告系統,根據廣告的重量(投標)在廣告之間隨機輪換。根據體重和挑選時間挑選隨機密鑰
local ads = local ads = {
["a"] = {
views = 0,
bid = 10
},
["b"] = {
views = 0,
bid = 1000
},
["c"] = {
views = 0,
bid = 100
},
["d"] = {
views = 0,
bid = 50
},
["e"] = {
views = 0,
bid = 500
},
["f"] = {
views = 0,
bid = 10
},
}
我尋找了一圈,發現下面的算法:所有的加權數
- 獲取和
- 選0之間的隨機數,並通過表格總結
- 環路(廣告)並且如果(隨機數)< =重量然後返回其他隨機數=隨機數 - 重量
使用算法和循環1000次打印出
a 3
c 60
b 581
e 313
d 35
f 8
這是非常好的。但是,正如你所看到的,即使在同等重量的情況下,廣告f的收看次數幾乎是廣告的3倍。
我試圖通過考慮廣告已經獲得的視圖來使算法更公平。我通過減少每個視圖的重量來做到這一點。
雖然我不能讓它工作,我不知道有人能幫助我嗎?
您應該期望結果不均勻,特別是對於低值。運行它1000000,事情可能會出來。 –
爲什麼'python'標籤? –
@SQLHacks是正確的。基於統計數字理論,較低的數字更容易受到隨機數發生器的影響。嘗試尋找一個加密隨機生成器,這是如果你想它真的是隨機的。如果你做這樣的事情真的很高的數字,你仍然會得到歪斜的數據。 –