Парадокс Монти Холла

Самая знаменитая задача теории вероятностей, обманувшая даже математиков.

Парадокс Монти Холла: в игре с тремя дверями смена выбранной двери после подсказки ведущего повышает шанс выигрыша с $1/3$ до $2/3$.

Три двери. За одной — автомобиль, за двумя — козы. Вы выбираете дверь. Ведущий, знающий, где автомобиль, открывает одну из оставшихся дверей с козой и предлагает: остаться или сменить выбор? Интуиция говорит «всё равно, 50 на 50». Интуиция неправа — и это можно строго доказать и увидеть в симуляции. История этой задачи поучительна сама по себе. Когда в 1990 году правильный ответ опубликовала колумнистка Мэрилин вос Савант, на неё обрушился шквал писем от читателей, включая профессоров математики, уверенно объяснявших, что она ошибается. Все они ссылались на ту же интуицию «50 на 50». Понадобились симуляции и аккуратные рассуждения, чтобы убедить скептиков. Этот эпизод — прекрасное напоминание: в вероятности интуиция регулярно подводит даже специалистов, и единственное надёжное лекарство — честный расчёт, подкреплённый экспериментом. Сейчас мы проделаем и то, и другое.

Почему смена выгодна

Когда вы выбираете дверь, вероятность угадать автомобиль — $\frac{1}{3}$, а вероятность, что он за одной из двух других дверей, — $\frac{2}{3}$. Ведущий не открывает дверь наугад: он знает, где приз, и всегда показывает козу. Этим он концентрирует все $\frac{2}{3}$ на единственной оставшейся закрытой двери. Поэтому:

$$P(\text{выигрыш при смене})=\frac{2}{3},\qquad P(\text{выигрыш при отказе})=\frac{1}{3}.$$

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

import random
random.seed(21)

def play(switch):
    car = random.randint(0, 2)
    choice = random.randint(0, 2)
    # ведущий открывает дверь с козой, не выбранную игроком
    doors = [d for d in range(3) if d != choice and d != car]
    opened = random.choice(doors)
    if switch:
        choice = next(d for d in range(3) if d != choice and d != opened)
    return choice == car

N = 500000
win_switch = sum(play(True)  for _ in range(N)) / N
win_stay   = sum(play(False) for _ in range(N)) / N
print("Смена двери:   ", round(win_switch, 4), "| теория 0.6667")
print("Остаться:      ", round(win_stay, 4),   "| теория 0.3333")

Вывод:

Смена двери:    0.6663 | теория 0.6667
Остаться:       0.3338 | теория 0.3333

Смена двери выигрывает примерно в двух случаях из трёх — ровно вдвое чаще, чем упрямство. Симуляция не оставляет места спору.

Усиление интуиции: сто дверей

Представьте не 3, а 100 дверей. Вы выбрали одну (шанс приза $\frac{1}{100}$), ведущий открыл 98 дверей с козами, оставив одну. Очевидно, что приз почти наверняка за этой оставшейся дверью, а не за вашей случайной. С тремя дверями та же логика, просто менее наглядна.

Как работает под капотом

В коде ведущий выбирает дверь из тех, что не выбраны игроком и не содержат приз — это и есть его «знание». Именно эта информированность ломает симметрию: если бы ведущий открывал дверь случайно (иногда показывая приз), парадокс исчез бы и стало бы действительно $\frac{1}{2}$. Симуляция честно моделирует обе стратегии на одном и том же случайном расположении приза, поэтому разница $\frac{2}{3}$ против $\frac{1}{3}$ — следствие именно правил игры, а не везения.

Частые ошибки

Главная ошибка — считать оставшиеся две двери равновероятными после открытия. Они не равновероятны, потому что ведущий действовал не случайно. Вторая ошибка — переносить вывод на ситуацию, где ведущий открывает дверь наугад: тогда условия другие и ответ действительно $\frac{1}{2}$. Третья — думать, что выбор «остаться» как-то использует подсказку; он её игнорирует и оставляет вас с исходными $\frac{1}{3}$.

Итог

  • Смена двери даёт выигрыш с вероятностью $\frac{2}{3}$, отказ — лишь $\frac{1}{3}$.
  • Причина — информированное, не случайное действие ведущего.
  • Аналогия со 100 дверями делает результат очевидным.
  • Если ведущий открывает дверь наугад, парадокс исчезает.
Проверьте себя
1. Какова вероятность выигрыша, если в парадоксе Монти Холла менять дверь?
A1/2
B1/3
C2/3
D3/4
2. Почему две оставшиеся двери НЕ равновероятны?
AОни равновероятны, ответ 1/2
BВедущий открывает дверь не случайно, а зная, где приз
CДвери разного размера
DИгрок видит приз
3. Что произойдёт, если ведущий будет открывать дверь случайно (иногда показывая приз)?
AСмена даст 2/3
BПарадокс исчезнет, станет 1/2
CИгрок всегда проиграет
DНичего не изменится