php抽奖概率算法(刮刮卡,大转盘)

本文实例为大家分享PHP中奖概率算法,可用于刮刮卡,大转盘等抽奖算法,用法很简单,代码里有详细注释说明,供大家参考,具体内容如下

PHP;"> $proCur) { $randNum = mt_rand(1,$proSum); if ($randNum <= $proCur) { $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<count($prize_arr);$i++){
$pr[] = $prize_arr[$i]['prize'];
}
$res['no'] = $pr;
print_r($res);
?>

以上就是PHP抽奖概率算法的全部内容,希望对大家学习PHP程序设计有所帮助,也希望大家多多支持编程之家。

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...