028-86261949

当前位置:首页 > 技术交流 > 抽奖概率算法实现

抽奖概率算法实现

2018/09/11 16:54 分类: 技术交流 浏览:361

我们在网络上经常看到有各种抽奖活动,活动中不同的奖品有不同的中奖概率,这个中奖概率是怎么实现的呢?


PHP实现代码如下

  1. //假设本次抽奖活动中奖概率如下
  2.         //iphoneX 0.1%
  3.         //小米6    0.5%
  4.         //充电宝    1%
  5.         //10元红包  20%
  6.         //1元红包   50%
  7.         //谢谢参与(未中奖)   28.4%
  8.  
  9.         //总的中奖率是100%
  10.         //PHP实现中奖率代码如下
  11.  
  12.         //定义奖品
  13.         $presents = [
  14.             'iphoneX',
  15.             '小米6',
  16.             '充电宝',
  17.            '10元红包',
  18.             '1元红包',
  19.             '谢谢参与(未中奖)',
  20.         ];
  21.         //定义中奖率,放大中奖率区间,保证中奖率均为整数,由0.1-50放大十倍,为1-500,总概率为1000
  22.         $percents = [
  23.             1,5,10,200,500,284
  24.         ];
  25.         //开始抽奖
  26.         //生成一个1到1000的随机整数
  27.         $all_percent = array_sum($percents);
  28.         $random_num = rand(1,$all_percent);
  29.         //循环检查随机数落在哪个奖品区间
  30.         $current_percent = 0;
  31.         $result = '';
  32.         foreach ($percents as $k=>$percent){
  33.             $current_percent += $percent;
  34.             if($random_num <= $current_percent){
  35.                 //如果随机数在当前概率区间,则说明中奖
  36.                 $result = $percents[$k];
  37.                 break;
  38.             }
  39.         }
  40.  
  41.         if($result && $result!='谢谢参与(未中奖')
  42.         {
  43.             //中奖
  44.             echo '恭喜您中奖了,奖品是:'.$result;
  45.         }else{
  46.             echo 'sorry,您没有中奖';
  47.         }
 感谢源码时代教学讲师提供此文章!
  本文为原创文章,转载请注明出处! 
#标签:算法,抽奖概率