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是正确的。基于统计数字理论,较低的数字更容易受到随机数发生器的影响。尝试寻找一个加密随机生成器,这是如果你想它真的是随机的。如果你做这样的事情真的很高的数字,你仍然会得到歪斜的数据。 –