$prize_arr = array( '0' => array('id'=>1,'prize'=>'elm_1','rate'=>1), '1' => array('id'=>2,'prize'=>'elm_2','rate'=>14), '2' => array('id'=>3,'prize'=>'elm_3','rate'=>20), '3' => array('id'=>4,'prize'=>'elm_4','rate'=>30), '4' => array('id'=>5,'prize'=>'elm_5','rate'=>35), ); function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; } /* * 每次前端页面的请求,PHP循环奖项设置数组, * 通过概率计算函数get_rand获取抽中的奖项id。 */ foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['rate']; } $rid = get_rand($arr); //根据概率获取奖项id $res = $prize_arr[$rid-1]['prize']; //中奖项 print_r($res);
PHP中奖概率实现
猜你喜欢
转载自www.cnblogs.com/pcx105/p/9176187.html
今日推荐
周排行