今天遇到這樣的一個問題 封裝一個 抽獎概率函數 思前想后去網上找點資料吧,而且不止一種方法 這種我感覺還是比較容易的 還是那句話 實現功能的思路不止一種 代碼也不止一種。
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;}$prize_arr = array('0' => array('id'=>1,'prize'=>'平板電腦','v'=>0.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),);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;echo json_encode($res,JSON_UNESCAPED_UNICODE);
以上這篇php簡單中獎算法(實例)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選