抽奖 foreach ($prize_arr as $k=$v) { $per = $v['num']/$total;//var_dump($v['num']); var_dump($total); print_r($per); $per = round($per*100,2);/*百分比*/ //var_dump($per); $arr[$v['id']] = $per; //$arr[$v['id']] = $v['v'];}//print_r($pr
          foreach ($prize_arr as $k=>$v) {
    $per = $v['num']/$total;//var_dump($v['num']); var_dump($total); print_r($per);
    $per = round($per*100,2);/*百分比*/  //var_dump($per);
    $arr[$v['id']] = $per;
    //$arr[$v['id']] = $v['v'];
}
//print_r($prize_arr);
//print_r($arr);
//exit;
$prize_id = getRand($arr); //根据概率获取奖项id 
foreach($prize_arr as $k=>$v){ //获取前端奖项位置
    if($v['id'] == $prize_id){
     $prize_site = $k;
     break;
    }
}
$res = $prize_arr[$prize_id - 1]; //中奖项 
//var_dump($res);
$data['prize_name'] = $res['prize'];
$data['prize_site'] = $prize_site;//前端奖项从-1开始
$data['prize_id'] = $prize_id;
echo json_encode($data);
function getRand($proArr) {
    $data = '';
    $proSum = array_sum($proArr); //概率数组的总概率精度 
    foreach ($proArr as $k => $v) { //概率数组循环
        $randNum = mt_rand(1, $proSum);
        if ($randNum <= $v) {
            $data = $k;
            break;
        } else {
            $proSum -= $v;
        }
    }
    unset($proArr);
    return $data;
} 
 lottery.zip
 
 
  
    lottery.zip 
    
        
        