/**
* @Desc: 简单的抽奖逻辑
* Date: 2024/1/31
*/
public function raffle()
{
// 抽奖权重从小到大顺序排列
$arr = [
['prize'=>'first', 'weight'=>1], // [1,1]
['prize'=>'second','weight'=>5], // [2,6]
['prize'=>'third', 'weight'=>15],// [7,21]
['prize'=>'fourth','weight'=>25],// [22,46]
['prize'=>'fifth','weight'=>54], // [47,100]
];
$totalWeight = array_sum(array_column($arr,'weight'));
$rand = rand(1,$totalWeight); // 随机的抽奖概率
$winPrize = ''; // 抽中的奖品
// 计算各个奖品的中奖区间
foreach ($arr as $key=>&$value){
if($key == 0){ // 第一个
$value['range'] = [1,$value['weight']];
}else{
$value['range'] = [$arr[$key-1]['range'][1] + 1,$arr[$key-1]['range'][1] + $value['weight']];
}
}
foreach ($arr as &$value){
if($rand >= $value['range'][0] && $rand <= $value['range'][1]){
$winPrize = $value['prize'];
break;
}
}
echo $winPrize;
}
php 实现简单的抽奖逻辑
于 2024-01-31 16:28:14 首次发布