#теория_вероятностей
Пытаюсь запрограмировать компьютер на победу с помощью парадокса Монти Холла Моя задача однако угадать генерируемое число из пяти чисел. То есть компьютер генерирует любом число = 0, 1, 2, 3, 4 И другая функция угадывает это число. Игра повторятся большое количество раз и по статистике моя функция должна привести к победе. Я попыталась следовать логике, описанной теорией вероятностей. Однако, к сожалению, мой код не приводит к выигрышу. Может быть кто-то может подсказать в чем ошибка. val choice1 = random.nextInt(5) var shown1:Int; do shown = random.nextInt(5) while (shown1 == choice1) var choice2: Int do choice2 = random.nextInt(5) while ( choice2 == shown1 || choice2 == choice1) var shown2:Int do shown2 = random.nextInt(5) while (shown2 == shown1 || shown2 == choice1 || shown2 == choice2) do guess = random.nextInt(5) while (guess == choice1 || guess == shown1 || guess == choice2 || guess == shown2) return Guess(guess)
Ответы
Ответ 1
Вопрос решен, всем спасибо. Готовый вариант на java: import java.util.Random; public class Monty{ public static void main(String[] args){ int switchWins = 0; int stayWins = 0; Random gen = new Random(); for(int plays = 0;plays < 32768;plays++ ){ int[] doors = {0,0,0};//0 is a goat, 1 is a car doors[gen.nextInt(3)] = 1;//put a winner in a random door int choice = gen.nextInt(3); //pick a door, any door int shown; //the shown door do{ shown = gen.nextInt(3); //don't show the winner or the choice }while(doors[shown] == 1 || shown == choice); stayWins += doors[choice];//if you won by staying, count it //the switched (last remaining) door is (3 - choice - shown), because 0+1+2=3 switchWins += doors[3 - choice - shown]; } System.out.println("Switching wins " + switchWins + " times."); System.out.println("Staying wins " + stayWins + " times."); } }
Комментариев нет:
Отправить комментарий