PHP中奖概率实现
$prize_arr = array( array('id'=>1,'prize'=>'elm_1','rate'=>1), array('id'=>2,'prize'=>'elm_2','rate'=>14), array('id'=>3,'prize'=>'elm_3','rate'=>20), array('id'=>4,'prize'=>'elm_4','rate'=>30), 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);