我工作的項目歐拉問題數205規定:概率在很多遊戲
彼得有九個四面(金字塔) 骰子,每個編號爲1,2面, 3,4科林有六個六面(立方) 骰子,每個編號1 2 4 5面, 3,,,6
彼得和Colin滾動他們的骰子和 比較總計:最高總 勝。如果 總數相等,則結果爲平局。
Pyteidal Pete擊敗Cubic Colin的概率是多少?給你的答案 四捨五入到形式0.abcdefg
我最初的嘗試(下)有涉及1000「遊戲」,其中每場比賽有百萬回合7位小數 。然後取所有遊戲的平均值。我始終在.559區域獲得結果,但是當答案需要達到小數點後7位時,這並不是那麼接近。
public class pe205 {
public static void main(String[] args) {
pe205 p = new pe205();
double sum = 0.0;
for(int i=0; i < 1000; i++){
sum += p.determineProbability();
}
System.out.println(sum/1000.0);
} // end main
public double determineProbability(){
int peterWins = 0;
int colinWins = 0;
for(int i=0; i < 1000000; i++){
int peterSum = 0;
for(int j=0; j < 4; j++){
Random r = new Random();
peterSum += r.nextInt(9);
}
//System.out.println(peterSum);
int colinSum = 0;
for(int j=0; j < 6; j++){
Random r = new Random();
colinSum += r.nextInt(6);
}
//System.out.println(colinSum);
if(peterSum > colinSum){
peterWins++;
}
if(colinSum > peterSum){
colinWins++;
}
}
double peteBeatsColin = (double)peterWins/(double)(colinWins + peterWins);
return peteBeatsColin;
}
} // end class
我讀過蒙地卡羅方法。這是否會成爲一種有用的情況,如果有的話,有人能給我一個簡短的介紹嗎?或者是我錯過了一些相當明顯的數學解決方案?
我想說,我喜歡這些問題的挑戰,我不是在尋找答案,只是朝着正確的方向前進一點點。
當需要如此多的小數位數時,Monte Carlo通常不是實用的解決方案。想想布豐針的問題。它收斂到pi,但非常緩慢(除非你碰巧是Mario Lazzarini)。 – jason 2011-02-01 05:43:23
錯誤收斂是平方根[error〜1/sqrt(N)],因此您可能需要O(10^12)個測試點 – 2011-02-01 05:51:20