可以使用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;
}
}
}
例如,如果$weights = array(1, 2, 3, 4),則根據權重生成的隨機數可能為0、1、2或3,其概率分別為1/10、2/10、3/10、4/10。