php實現抽獎的簡單概率演算法

weixin_34007291發表於2016-12-07

配置陣列(v代表概率)

$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), );

邏輯程式碼

foreach ($prize_arr as $key => $val) { 
    $arr[$val['id']] = $val['v']; 
} 
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; 
        } 
    }  
    return $result; 
} 

相關文章