首頁 >後端開發 >php教程 >php中獎演算法詳解

php中獎演算法詳解

小云云
小云云原創
2018-01-26 13:42:531987瀏覽

本文主要為大家帶來一個php簡單中獎演算法(實例)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。

今天遇到這樣的一個問題  封裝一個抽獎機率函數思前想後去網上找點資料吧,而且不止一種方法這種我感覺還是比較容易的還是那句話實現功能的思路不只一種代碼也不只一種。


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(
&#39;0&#39; => array(&#39;id&#39;=>1,&#39;prize&#39;=>&#39;平板电脑&#39;,&#39;v&#39;=>0.1),
&#39;1&#39; => array(&#39;id&#39;=>2,&#39;prize&#39;=>&#39;数码相机&#39;,&#39;v&#39;=>5),
&#39;2&#39; => array(&#39;id&#39;=>3,&#39;prize&#39;=>&#39;音箱设备&#39;,&#39;v&#39;=>10),
&#39;3&#39; => array(&#39;id&#39;=>4,&#39;prize&#39;=>&#39;4G优盘&#39;,&#39;v&#39;=>12),
&#39;4&#39; => array(&#39;id&#39;=>5,&#39;prize&#39;=>&#39;10Q币&#39;,&#39;v&#39;=>22),
&#39;5&#39; => array(&#39;id&#39;=>6,&#39;prize&#39;=>&#39;下次没准就能中哦&#39;,&#39;v&#39;=>50),
);


foreach ($prize_arr as $key => $val) {
$arr[$val[&#39;id&#39;]] = $val[&#39;v&#39;];
}
$rid = get_rand($arr); //根据概率获取奖项id
$res[&#39;yes&#39;] = $prize_arr[$rid-1][&#39;prize&#39;]; //中奖项
unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr); //打乱数组顺序
for($i=0;$i<count($prize_arr);$i++){
$pr[] = $prize_arr[$i][&#39;prize&#39;];
}
$res[&#39;no&#39;] = $pr;
echo json_encode($res,JSON_UNESCAPED_UNICODE);

相關推薦:

php實作抽獎程式中獎機率演算法的範例

php 中獎機率演算法實作代碼

PHP中獎機率的抽獎演算法程式碼_PHP教程

以上是php中獎演算法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn