关于抽奖概率的控制整理

马上又快到年底了,又该有抽奖活动吸引用户了,最近leader分配了个小任务,就是做个抽奖活动的页面,这里整理下概率的控制. 例子: 假设有6种奖品,1种空奖,这里1-6分别代表6种奖励,0代表空奖.各种奖励结果的概率要求控制不一样,那应该怎么办呢,首先我第一反应想到的就是下面的办法。

/** 抽奖池 */
$poolArr = array();
$poolArr = array_merge($poolArr, array_fill(0, 27, 1)); //第一种奖品出现概率27%
$poolArr = array_merge($poolArr, array_fill(0, 15, 2); //第二种奖品出现概率15%
$poolArr = array_merge($poolArr, array_fill(0, 15, 3); //第三种奖品出现概率15%
$poolArr = array_merge($poolArr, array_fill(0, 18, 4));//第四种奖品出现概率18%
$poolArr = array_merge($poolArr, array_fill(0, 18, 5));//第五种奖品出现概率33%
$poolArr = array_merge($poolArr, array_fill(0, 18, 6));//第五种奖品出现概率6%
$poolArr = array_merge($poolArr, array_fill(0, 18, 0));//空奖出现概率4%
$randKey= array_rand($poolArr);
$reward  = $poolArr[$randKey];

ok,这种方案很简单,反应总概率100%,那种概率n%,那我放n个这种就是了,总数量为100, 随机抽取一个奖励的概率就是n%

这种肯定是能符合要求的,但是这种方案是不是太low了,有没有更好的呢,我得再想想................... 接下来网上翻了翻,搜集了下

方案1: 把1按照区间划分,然后随机0-1之间的某个数,随机到某个区间,就是某项奖品,好吧,这个其实跟上面的想法类似

方案2: 如果奖品的数量有限制,而且抽奖的人数很多,为了避免很快就被抢光,可以按照时间释放奖品,再用概率空置这个奖品的中奖概率

转载于:https://my.oschina.net/u/3132973/blog/806713

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值