随机输出“苹果”,“橘子”,“香蕉”要求输出“苹果”的概率为50%,“橘子”的概率为30%,“香蕉”的概率为20%
1.第一种算法
function getRandom($pr){
$temp = rand(0,array_sum($pr));
$left = 0;
$right = 0;
foreach ($pr as $k=>$v){
$right+=$v;
if($left<=$temp && $temp<$right){
return $k;
}
$left+=$v;
}
}
//转盘抽奖数据
function getAwardData(){
return [
1=>['id'=>1,'pr'=>50],
2=>['id'=>2,'pr'=>30],
4=>['id'=>4,'pr'=>20],
];
}
$awardData = getAwardData(); //抽奖的数据
foreach ($awardData as $v){
$pr[$v['id']] = $v['pr'];
}
$award_id = getRandom($pr);
print_r('id:'.$award_id);
第二种
//str_shuffle来处理
$array=array('1'=>'苹果','2'=>'橘子','3'=>'香蕉');
$string="1111122233";
$key=str_shuffle($string);
echo $array[$key{0}];
PHP抽奖概率
最新推荐文章于 2024-01-31 16:28:14 发布