Я работаю над проблемой проекта Эйлера № 205, в которой говорится:
У Питера есть девять четырехгранных (пирамидальных) костей, каждая с гранями 1, 2, 3, 4. У Колинашесть шестигранных (кубических) кубиков, каждый с гранями, пронумерованными 1, 2, 3, 4, 5, 6.
Питер и Колин бросают свои кости и сравнивают итоги: самые высокие общие выигрыши.Результатом является ничья, если общие суммы равны.
Какова вероятность того, что Пирамидальный Пит победит Кубического Колина?Дайте ответ, округленный до семи знаков после запятой в форме 0.abcdefg
Моя первая попытка (ниже) включала в себя 1000 «игр», где в каждой игре было 1 000 000 ходов.Затем берём среднее по всем играм.Я последовательно получаю результаты в области .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
Я читал о методе Монте-Карло.Будет ли это ситуация, когда это будет полезно, и если да, может ли кто-нибудь дать мне краткий обзор?Или я упускаю какое-то довольно очевидное математическое решение?
Я хотел бы сказать, что мне нравится решать эти проблемы, и я не ищу ответа, просто небольшой толчок вправильное направление.