考慮到數學輸出與程序給出的數據輸出之間的差異,我遇到了一個問題。概率計數中的Java輸出
我想計算以1/6的概率獲得相同數字兩次的概率,應該是1 in 1/6 * 1/6 = 36
。但是,我在42-43之間得到了答案。哪裏不對?
int guess = (int) (Math.random() * 6);
int real = (int) (Math.random() * 6);
int countTot = 0;
int countReal = 0;
int countGen = 0;
while (true) {
if (countReal == 2) {
countGen++;
countReal = 0;
if (countGen == 1000000) {
System.out.println("Probability: 1 in " + countTot/countGen);
System.exit(0);
}
}
if (guess == real) {
countReal++;
countTot++;
} else {
countReal = 0;
countTot++;
}
guess = (int) (Math.random() * 6);
real = (int) (Math.random() * 6);
}
想想看,我這樣做是1000000
倍(countGen
),並把結果的平均值。提前致謝。
而且這個算法比OP更清晰。 –
感謝您的幫助,我現在明白了! – Playdowin