一个简单的基于权重的随机抽奖
<?php
$prizes = [
["name" => "奖品1", "weight" => 2], // 20%
["name" => "奖品2", "weight" => 3], // 30%
["name" => "奖品3", "weight" => 5] // 50%
];
// 计算权重总和
$totalWeight = array_sum(array_column($prizes, 'weight'));
// 生成 1 ~ $totalWeight 之间的随机数
$randomValue = mt_rand(1, $totalWeight);
$currentWeight = 0;
foreach ($prizes as $prize) {
$currentWeight += $prize["weight"];
if ($randomValue <= $currentWeight) {
echo "抽中:" . $prize["name"];
break;
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小白