2014-06-19 16 views
0

如果我想要一個和三個之間的隨機數我可以做$n = mt_rand(1,3)控制隨機生成的數字的可能性

有33%的機率是$n = 1,33%的機率是2,和33%的機會,這是3

如果我想使它更難以得到一個3比1?假設我想有1%被抽取的概率爲50%,抽取2的概率爲30%,抽取3的概率爲20%?

我需要一個可擴展的解決方案,因爲可能的範圍會在1-3和1-100之間變化,但總的來說,我希望較低的數字比較高的數字更多。

我該如何做到這一點?

回答

1

這是數學。

在您的例子中,只是選擇了0到99之間的隨機數

值介於0至49返回 - 稱它爲1只 值50之間返回 - 69 - 說它2只 值70之間返回 - 99 - 說它3

簡單的if語句會做這樣或填充,供配電的陣列所需

2

還有就是你如何使用標準統一的隨機變量產生隨機變量有類似的分佈的簡單的解釋你想要的一個:

https://math.stackexchange.com/a/241543

+0

+1指出這個問題屬於數學而不是SO,但這是最簡單的解釋。 –

1

假設1 - 10的規模,你可以使用if語句簡單,並具有數字代表百分比。每個if語句都將$ n設置爲特定的。只有垮臺,它不是普遍的。

$dummy = mt_rand(1,10); 

// represents 50% 
if ($dummy <= 5) { 
    $n = 1; 
} 
// represents 40% 
if ($dummy >= 6 && $dummy <= 9) { 
    $n = 2; 
} else { 
// represents 10% 
    $n = 3; 
}