有多少游戏的抽奖系统是这样的?



非等概率抽奖算法

抽奖需求:

  1. 每日抽奖3次,第1次中奖率 小于 第2次中奖率 小于 第3次中奖率;

  2. 每日参与各次抽奖的人数不固定,奖品月投放总量固定;

  3. 用户中奖率按等级分层,高价值奖品让高等级用户抽中;

  4. 有的奖品只在固定时间段出现,有的奖品在某个时间段出现概率更高;

  5. 存在黑名单和白名单,名单上的用户一定中某类奖品或者一定不中某类奖品;

     

算法实现:

1.确定单日抽奖人次;

DAY1:预估参与抽奖人次为N1;DAY2:参与抽奖人次为N2=N0+N',其中N'为预估的增长量;DAY3:N3=N2+N‘’......如此迭代,第N天用户参与抽奖人次的预估Nn就可以根据前面N-1天参与抽奖的人次来估计,而且这个估计会越来越准确。

 

2.确定奖品总量和奖品池;

假设有A,B,C,D4类奖品,单日投放总量为M。用户中奖率=M/Nn

假定用户中奖率为0.8,那么用户进来抽奖,随机生成1到100的随机数中的一个;

时段1: 1到10为中A奖品,11到50中B奖品,51到60中C奖品,61到80中D奖品,81到100不中奖;

时段2:1到10中A奖品,11到20中B奖品,21到70中C奖品,71到80中D奖品,81到100不中奖;

这样就可以根据不同的时段,让不同奖品中奖率不同;

 

3.用户等级分层;

用户抽奖生成的随机数,假设为X。X乘以一个数,假设为L:用户为高等级用户,L<1;用户为低等级用户,小号用户,L>1;

 

4.各次抽奖中奖概率不同;

根据第3步中得到乘以L之后的随机数,再乘以一个数,假设为T。第一次抽奖,乘以T1;第二次抽奖,乘以T2;第三次抽奖,乘以T3;

 

最终用户进入奖池的随机数=X*L*T,根据抽奖时间段进入不同的奖池进行抽奖即可

注:白名单和黑名单用户另外单独判定;


原文地址http://offer1988.diandian.com/post/2012-09-28/40038409408

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值