首页 > 编程语言 > 详细

抽奖概率算法

时间:2019-04-15 19:17:15      阅读:91      评论:0      收藏:0      [点我收藏+]
<?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参考源码

抽奖概率算法

原文:https://www.cnblogs.com/webclz/p/10712205.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!