Версия для печати

В фильме «21» режисёра Robert Luketic упоминается задача теории вероятности:

Представьте, что вы стали участником игры, в которой вам нужно выбрать одну из трех дверей. За одной из дверей находится автомобиль, за двумя другими дверями — козы. Вы выбираете одну из дверей, например, номер 1, после этого ведущий, который знает, где находится автомобиль, а где — козы, открывает одну из оставшихся дверей, например, номер 3, за которой находится коза. После этого он спрашивает вас, не желаете ли вы изменить свой выбор и выбрать дверь номер 2. Увеличатся ли ваши шансы выиграть автомобиль, если вы примете предложение ведущего и измените свой выбор ?

Правильным решением этой задачи является ответ: да, шансы выиграть автомобиль увеличиваются в два раза, если игрок будет следовать совету ведущего и изменит свой первоначальный выбор.

Парадокс Монти Холла — одна из известных задач теории вероятностей, решение которой, на первый взгляд, противоречит здравому смыслу. Задача формулируется как описание гипотетической игры, основанной на американском телешоу «Let’s Make a Deal», и названа в честь ведущего этой передачи. Варианты решения и ключи к пониманию достаточно подробно описаны в Википедии.

Мы же попробуем написать программу, которая бы загадывала двери с машинами и козами, случайно выбирала бы одну из дверей и подсчитывала проигрыши и выигрыши.

Эту задачу можно свести к более простой задаче, и её моделирование будет очень простым: ведущий случайно загадывает номер двери, которая выигрывает — 1,2 или 3. Мы случайно выбираем дверь, то есть так же загадываем номер 1,2 или 3. Ведущий открывает одну, точно проигрывающую дверь, и у нас остаются две двери и две возможности: менять выбор или не менять:

  1. если мы не меняем выбор, то не зависимо от того, какую дверь открыл ведущий, мы выигрываем только тогда, когда сразу и точно угадали дверь. Другими словами, мы выиграли — если загаданный номер двери ведущего совпадает с номером двери, которую выбрали мы.
  2. если же мы меняем выбор, то  всё становится наоборот: мы проигрываем, если сразу угадали дверь, но поменяли её. И выигрываем, если сразу не угадали дверь, но изменили её на дверь ведущего.

Получается, что для подсчёта выигрышей по первой стратегии достаточно считать только случаи, когда мы точно угадали, загаданный ведущим, номер двери. А выигрыши по второй стратегии — это проирыши по первой. Вот и реализация этого алгоритма на python:

#!/usr/bin/python -Ou
#
# Written by kocmuk.ru, 2008
#
import random

num = 1000   # количество игр, которое мы хотим сыграть
win = 0      # начальное значение выирышей, которых мы добъёмся, если не будем менять выбор

for i in range(1, num):                            # играем num игр
    if random.randint(1,3) == random.randint(1,3): # в случае, если мы угадали сразу,
        win +=1                                    # увеличиваем количество выигрышей на 1
print "Я не менял выбора и выиграл:", win, "игр"   # выигрыши по первой стратегии
print "Я менял выбор и выиграл:", num-win, "игр"   # проигрыши по первой стратегии - это выигрыши по второй

Результаты игр у меня получились примерно такие: я не менял решение и выиграл 348 машин из 1000, а если бы я менял решение, выиграл бы 652 машин из 1000. Теория подтверждается экспериментом: шансы выиграть автомобиль увеличиваются в два раза, если игрок будет следовать совету ведущего и изменит свой первоначальный выбор. Попробуйте и вы поиграть и решить для себя: менять или не менять выбор, если у вас будет такая возможность. Удачи! :)


По теме:

Один комментарий на запись “Моделирование парадокса Монти Холла на python”

  1. lexore пишет:

    Парадокса никакого нет, если немного знать теорию вероятности и посмотреть под такой точкой зрения:

    И разобьем двери на 2 группы.

    В первую группу войдет та дверь, которую мы выбрали (допустим, дверь #1).

    Такая группа из одной двери)

    Во вторую группу войдут двери #2 и #3.

    Грубо говоря, вероятность, что машина в двери из первой группы = 1/3.

    Вероятность того, что машина в дверях второй группы = 2/3.

    Внутри второй группы вероятность у каждой двери = ½.

    А значит, вероятность второй двери = 2/3 * ½ = 1/3.

    Вероятность третьей двери = 2/3 * ½ = 1/3.

    После того, как ведущий открывает одну дверь (пусть, дверь #3), вероятность этой двери становится равной 0.

    В том числе и вероятность двери #3 равна 0 (внутри группы из 2 дверей).

    Следовательно, вероятность оставшейся в группе двери (#2) становится равна 1.

    Было ½ и ½ (внутри группы), стало 1 и 0.

    По теореме полной вероятности, когда сумма всех вероятностей = 100%, или 1.

    Умножаем вероятность группы на вероятность каждой двери внутри группы.

    Вероятность двери #2: 2/3 * 1 = 2/3.

    Вероятность двери #3: 2/3 * 0 = 0.

    По той же теории вероятности, значение вероятности приблизительно равно проценту выигрышей.

    Кстати, в теории вероятности так же есть обоснование для того, почему равно приблизительно.

    Ну а пример на питоне это подтверждает.

    Чем больше брать количество игр, тем ближе будет результат к значению 2/3.

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


Антиспам-картинка