码迷,mamicode.com
首页 > 编程语言 > 详细

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法

时间:2016-03-31 16:46:06      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

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‘=>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
    $pr[] = $prize_arr[$i][‘prize‘]; 
} 
$res[‘no‘] = $pr; 
print_r($res); 

 

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法

标签:

原文地址:http://www.cnblogs.com/zhoumeng780/p/5341508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!