抽奖概率算法

Posted webclz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽奖概率算法相关的知识,希望对你有一定的参考价值。

<?php
header("Content-Type: text/html; charset=UTF-8");
function dump($arr){
    echo <pre>.print_r($arr,TRUE).</pre>;
}
/*概率算法
proArr array(100,200,300,400)
*/
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; 
}
/*
获取中奖
*/
function  get_prize(){
$prize_arr = array( 
    array(id=>1,prize=>平板电脑,v=>1), 
    array(id=>2,prize=>数码相机,v=>1), 
    array(id=>3,prize=>音箱设备,v=>1), 
   array(id=>4,prize=>4G优盘,v=>1), 
   array(id=>5,prize=>10Q币,v=>1), 
   array(id=>6,prize=>下次没准就能中哦,v=>95), 
);
foreach ($prize_arr as $key => $val) { 
    $arr[$val[id]] = $val[v]; 
} 
$ridk = get_rand($arr); //根据概率获取奖项id 
$res[yes] = $prize_arr[$ridk-1][prize]; //中奖项 
unset($prize_arr[$ridk-1]); //将中奖项从数组中剔除,剩下未中奖项 
shuffle($prize_arr); //打乱数组顺序 
for($i=0;$i<count($prize_arr);$i++){ 
    $pr[] = $prize_arr[$i][prize]; 
} 
$res[no] = $pr;
return $res;
}
dump(get_prize());

博客园参考文章

github参考源码

以上是关于抽奖概率算法的主要内容,如果未能解决你的问题,请参考以下文章

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

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

抽奖算法-指定概率的随机

抽奖概率算法

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

php概率算法(抽奖广告首选)