2015-04-21 45 views
2

如何使用生成介於1和3之間的數字的函數來生成介於1和9之間的數字?獲得1到9之間任意數字的概率必須相同,所以rand3()+ rand3()+ rand3()不是一個好的解決方案。使用Rand3()的隨機生成器Rand9()

回答

2

嘗試直角狀產品:

Rand9() = 3 * (Rand3() - 1) + Rand3() 

隨着3 *(Rand3() - 1)你讓子區間1-3,4-6和7-9同樣可能。使用+ Rand3(),您將在該子區間上同樣選擇。

寫爲產物:

3 * (Rand3() - 1) + Rand3() -> {1, 4, 7} X {+1,+2,+3} -> {1,2,3,4,5,6,7,8,9} 
+4

的子區間都爲0,3和6,而不是1,4和7 :) –