我想要一個從0到3的隨機數,並嘗試下面的代碼,看看它是如何工作的。隨機數發生器的行爲奇怪
int[] count = new int[4];
for (int i = 0; i < 1000; i++) {
int t = (int)(Math.round((Math.random() *3)));
count[t] +=1;
}
for (int i = 0; i < count.length; i++) {
System.out.println(count[i]);
}
現在奇怪的是,0和3擊中了大約一半的時間1和2擊中,這怎麼可能?
四捨五入。從0到0.5變爲0 - 從2.5到3變成3. 1.5到2.5是間隔的兩倍,因此被擊中的可能性是兩倍。統一的結果使用'floor'而不是'round'。 – Floris 2013-03-10 04:40:49
我自己,我會使用Random類的'nextInt(4)'方法。 – 2013-03-10 04:41:46
謝謝你們!爲解釋和如何改變它。 – Tricky 2013-03-10 04:47:14