Страницы

Поиск по вопросам

суббота, 7 декабря 2019 г.

Парадокс Монти Холла - не реализовать

#теория_вероятностей


Пытаюсь запрограмировать компьютер на победу с помощью парадокса Монти Холла

Моя задача однако угадать генерируемое число из пяти чисел.
То есть компьютер генерирует любом число = 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."); } }

Комментариев нет:

Отправить комментарий