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

Posted kobe工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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( 
    ‘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中奖概率算法,可用于刮刮卡,大转盘等抽奖算法的主要内容,如果未能解决你的问题,请参考以下文章

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

PHP实现刮刮卡,大转盘抽奖概率,其实很简单!

php抽奖算法

经典抽奖概率算法

PHP实现大转盘抽奖算法实例

项目实战——Java根据奖品权重计算中奖概率实现抽奖(适用于砸金蛋大转盘等抽奖活动)