0
是否可以在PHP中生成隨機數,例如從1到10,並且讓它更可能生成比更高數字更小的數字?生成具有不同概率的隨機數
是否可以在PHP中生成隨機數,例如從1到10,並且讓它更可能生成比更高數字更小的數字?生成具有不同概率的隨機數
當然。只是做更多的隨機性:
//80% chance that it's going to be a number that's smaller or equal to 5
if (rand(0, 10) <= 8) {
$number = rand(0, 5);
} else {
$number = rand(6, 10);
}
演示代碼:
<?php
$numbers = array();
for ($i = 0; $i < 1000; $i++) {
if (rand(0, 10) <= 8) {
$number = rand(0, 5);
} else {
$number = rand(6, 10);
}
$numbers[$number] = (isset($numbers[$number]) ? $numbers[$number] + 1 : 1);
}
print_r($numbers);
輸出:
Array
(
[0] => 141
[1] => 147
[2] => 135
[3] => 137
[4] => 131
[5] => 148
[6] => 34
[7] => 27
[8] => 36
[9] => 33
[10] => 31
)
你需要爲你的隨機數定義一個分佈函數。有了這個功能,你可以編寫你的自定義隨機生成器 – hek2mgl
沒有蘭德(1,10)以相同的概率從1到10生成數字來獲得每個數字,我希望它更可能產生1,2,3 ..比7,8,9。 – MrDi
或者是一個快速和髒的概率轉換:'echo(rand(1,12)%10);'導致非均勻分佈,因爲0和1現在具有更高的概率。 – Samuel