可以使用PHP的mt_rand()函数结合权重来生成随机数。具体步骤如下:
-
首先定义一个包含各个权重的数组,如$weights = array(1, 2, 3, 4)。
-
计算权重数组的总和,如$totalWeight = array_sum($weights)。
-
生成一个随机数$rndNum,范围为1到$totalWeight之间,如$rndNum = mt_rand(1, $totalWeight)。
-
遍历权重数组,累加每个权重值,并判断$rndNum是否小于等于累加值,如果是,则返回当前索引值作为随机数,如下所示:
function getRandomNumberByWeight($weights) {
$totalWeight = array_sum($weights);
$rndNum = mt_rand(1, $totalWeight);
$cumulativeWeight = 0;
foreach($weights as $key => $weight) {
$cumulativeWeight += $weight;
if($rndNum <= $cumulativeWeight) {
return $key;
}
}
}
- 调用函数getRandomNumberByWeight($weights),即可根据权重生成随机数。
例如,如果$weights = array(1, 2, 3, 4),则根据权重生成的随机数可能为0、1、2或3,其概率分别为1/10、2/10、3/10、4/10。