由于最近有个网页端的抽奖推广活动,抽奖的随机性是个非自然随机应该是个公开的秘密了吧,因为公司本着不欺骗,又不能太亏的原则,把几十台苹果或者其他高端奖品全部交给运气来分配,自己无法控制的,始终是不安心,所以这里面就需要一些策略来处理。接下来一步步揭秘。
首先抛出一个无策略的策略,所有的奖品相当于一个数组,再随机生成一个数字,这时候,奖品已经确定,然后转盘开始转动,再停下,恭喜你,中了啥。这就是最简单的策略,但是这就比较考验老板的心脏了,全凭运气,说不定一天几十台就没了。所以,需要优化。接下来说说怎么优化。
首先可以为奖品这个数组加上一个权重,例如
var awardWeights = {
1:{
weight:1,
name:’1等奖’
},
2:{
weight:50,
name:’二等奖’
},
3:{
weight:300,
name:”三等奖”
},
4:{
weight:800,
name:”四等奖”
},
5:{
weight:1500,
name:”5等奖”
},
6:{
weight:10000,
name:’未中奖’
}
};
从调整这个权重,就可以比较好控制中奖概率了,例如这里的一等奖,概率就只有万里挑一了,如果老板再小气点,可以把权重再调小一点,不过别太刷用户了哦。
虽然这样控制力度细化了点,但是还是不好控制,假如你今天只想出去两台iPhone,但是概率论的事情谁都说不准,所以,需要进一步优化。
我们可以在数据库中生成今天所有的抽奖数据,例如10个一等奖,100个二等,1000个三等奖,其他的5000个都是未中奖。数据库中当天就有6110个数据,接下来用户抽奖的时候在这6110个记录中随机挑一个就可以了,全在掌控之中。
这两种方式也可以灵活地糅合在一起产生新的更好的策略,这里只做一个抛砖引玉,就不进一步讨论了。到目前为止是抽奖的核心,随机。浏览器端的转盘也很重要。接下来聊聊浏览器端的工作。
转盘,肯定是要转,总