2012-02-13 35 views
2

我目前正在爲我維護的網站編制一個積分系統的過程,並且我希望每天給予我的用戶隨機數量的積分。生成一個隨機數,偏差結果爲PHP

這是我在想什麼

[0-25] has a 75% chance 
[26 - 51] has a 13% chance 
[52 - 76] has a 6% chance 
[77 - 115] has a 4% chance 
[115 - 200 ] has a mere 2% chance 

所以,點支架0-25有被產生的75%的機會,所以最有可能是由一個。

如果有人有任何想法或建議,聽到他們會很棒。

所以,基本上我想要一個隨機數產生,1-200,我想0-25有一個更高的機會,115-200。

+0

尋找同樣的事情:d現在我做的陣列爲每個部門和一個蘭特選擇一個部門再進行第二次選擇所選擇的劃分 – 2012-02-13 01:23:21

+1

內的號碼,但我不明白你的百分比:S,總和應該是100%否? – 2012-02-13 01:24:12

+0

這就是我想要的,百分比肯定會改變,但是它像貨幣體系一樣,我不希望它很容易從115-200個積分中很容易地獲得,id就像它是罕見的發生! – 2012-02-13 01:26:46

回答

3

首先生成一個0到99之間的隨機數。然後在第一個選取的範圍內生成第二個隨機數。

$ranges = Array(
    Array(0,25,75), // [0-25] on 75% chance 
    Array(26,51,13), 
    Array(52,76,6), 
    Array(77,115,4), 
    Array(115,200,2) 
); 
$sel = rand(0,99); 
do { 
    $pick = array_shift($ranges); 
    $sel -= $pick[2]; 
} while($pick && $sel >= 0); 
$random = rand($pick[0],$pick[1]); 
+0

這正是我正在尋找的,非常感謝你,我真的很感激! – 2012-02-13 01:42:51

+0

和我的建議:) – 2012-02-13 02:03:45