首页 >php教程 >php手册 >php中奖概率算法与大转盘等抽奖算法

php中奖概率算法与大转盘等抽奖算法

WBOY
WBOY原创
2016-06-13 09:33:24893浏览

   php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法。用法很简单,代码里有详细注释说明,一看就懂

  $proCur) {

  $randNum = mt_rand(1, $proSum);

  if ($randNum

  $result = $key;

  break;

  } else {

  $proSum -= $proCur;

  }

  }

  unset ($proArr);

  return $result;

  }

  /*

  * 奖项数组

  * 是一个二维数组,记录了所有本次抽奖的奖项信息,

  * 其中id表示中奖等级,prize表示奖品,v表示中奖概率。

  * 注意其中的v必须为整数,你可以将对应的 奖项的v设置成0,即意味着该奖项抽中的几率是0,

  * 数组中v的总和(基数),基数越大越能体现概率的准确性。

  * 本例中v的总和为100,那么平板电脑对应的 中奖概率就是1%,

  * 如果v的总和是10000,那中奖概率就是万分之一了。

  *

  */

  $prize_arr = array(

  '0' => array('id'=>1,'prize'=>'平板电脑','v'=>1),

  '1' => array('id'=>2,'prize'=>'数码相机','v'=>5),

  '2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),

  '3' => array('id'=>4,'prize'=>'4G优盘','v'=>12),

  '4' => array('id'=>5,'prize'=>'10Q币','v'=>22),

  '5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),

  );

  /*

  * 每次前端页面的请求,PHP循环奖项设置数组,

  * 通过概率计算函数get_rand获取抽中的奖项id。

  * 将中奖奖品保存在数组$res['yes']中,

  * 而剩下的未中奖的信息保存在$res['no']中,

  * 最后输出json个数数据给前端页面。

  */

  foreach ($prize_arr as $key => $val) {

  $arr[$val['id']] = $val['v'];

  }

  $rid = get_rand($arr); //根据概率获取奖项id

  $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项

  unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项

  shuffle($prize_arr); //打乱数组顺序

  for($i=0;$i

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn