抽奖概率算法实现
2018/09/11 16:54 分类: 技术交流 浏览:361
我们在网络上经常看到有各种抽奖活动,活动中不同的奖品有不同的中奖概率,这个中奖概率是怎么实现的呢?
PHP实现代码如下
- //假设本次抽奖活动中奖概率如下
- //iphoneX 0.1%
- //小米6 0.5%
- //充电宝 1%
- //10元红包 20%
- //1元红包 50%
- //谢谢参与(未中奖) 28.4%
- //总的中奖率是100%
- //PHP实现中奖率代码如下
- //定义奖品
- $presents = [
- 'iphoneX',
- '小米6',
- '充电宝',
- '10元红包',
- '1元红包',
- '谢谢参与(未中奖)',
- ];
- //定义中奖率,放大中奖率区间,保证中奖率均为整数,由0.1-50放大十倍,为1-500,总概率为1000
- $percents = [
- 1,5,10,200,500,284
- ];
- //开始抽奖
- //生成一个1到1000的随机整数
- $all_percent = array_sum($percents);
- $random_num = rand(1,$all_percent);
- //循环检查随机数落在哪个奖品区间
- $current_percent = 0;
- $result = '';
- foreach ($percents as $k=>$percent){
- $current_percent += $percent;
- if($random_num <= $current_percent){
- //如果随机数在当前概率区间,则说明中奖
- $result = $percents[$k];
- break;
- }
- }
- if($result && $result!='谢谢参与(未中奖')
- {
- //中奖
- echo '恭喜您中奖了,奖品是:'.$result;
- }else{
- echo 'sorry,您没有中奖';
- }
感谢源码时代教学讲师提供此文章!
本文为原创文章,转载请注明出处!
赞 0