Собесов

zadachi_ds: Задача Монти Холла и Байесовское рассуждение

Статистика и теорверУсловная вероятностьЛёгкаяJunior

Условие

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

Решение

Интуиция (короткий ответ)

Менять! Вероятность выиграть после смены — 2/3, без смены — 1/3.

Формально через Байеса

Обозначения:

  • C_k — приз за дверью k.
  • H_k — ведущий открыл дверь k.

Изначально P(C_1) = P(C_2) = P(C_3) = 1/3. Вы выбрали дверь 1; ведущий открыл дверь 3.

Вероятность открытия двери 3 при каждой гипотезе:

P(H_3 | C_1) = 1/2     // у ведущего выбор из двух пустых, открывает любую
P(H_3 | C_2) = 1       // дверь 1 закрыта (вы выбрали), дверь 2 — приз, остаётся 3
P(H_3 | C_3) = 0       // не откроет дверь с призом

По формуле Байеса:

P(H_3) = P(H_3|C_1)·P(C_1) + P(H_3|C_2)·P(C_2) + P(H_3|C_3)·P(C_3)
       = 1/2 · 1/3 + 1 · 1/3 + 0 = 1/6 + 1/3 = 1/2

P(C_1 | H_3) = P(H_3|C_1) · P(C_1) / P(H_3) = (1/2 · 1/3) / (1/2) = 1/3
P(C_2 | H_3) = P(H_3|C_2) · P(C_2) / P(H_3) = (1 · 1/3) / (1/2) = 2/3
P(C_3 | H_3) = 0

→ менять на дверь 2 даёт 2/3 шанса выиграть.

Интуитивное объяснение

Когда вы выбираете дверь 1, шанс выиграть — 1/3. Шанс, что приз в одной из других двух — 2/3. Ведущий показывает, какая из тех двух пустая. Вся вероятность 2/3 «концентрируется» на оставшейся двери.

Чем больше дверей — тем сильнее эффект:

  • 100 дверей, вы выбрали одну, ведущий открыл 98 пустых → менять = 99% шанс.

Распространённая ошибка

«Осталось две двери — 50/50». Ошибка в том, что открытие двери — не случайное событие. Ведущий знает, где приз, и осознанно открывает пустую. Это нарушает симметрию.

Если бы ведущий открывал случайно (не зная, где приз), и случайно попал в пустую — тогда было бы 50/50. Но в классической версии — нет.

Симуляция

import numpy as np
rng = np.random.default_rng(0)
 
def trial(switch=True):
    prize = rng.integers(0, 3)
    pick = 0                          # WLOG выбираем дверь 0
    # ведущий открывает дверь, которая != prize и != pick
    options = [d for d in range(3) if d != pick and d != prize]
    host_opens = rng.choice(options)
    if switch:
        final = next(d for d in range(3) if d not in (pick, host_opens))
    else:
        final = pick
    return final == prize
 
N = 100_000
print("switch :", np.mean([trial(True)  for _ in range(N)]))   # ≈ 0.667
print("stay   :", np.mean([trial(False) for _ in range(N)]))   # ≈ 0.333

Когда правильный ответ — 50/50

Вариант «случайный Монти»: ведущий открывает одну из двух оставшихся дверей случайно, не зная содержимого. Если случайно открыл пустую — после этого 50/50. Если открыл приз — игра останавливается.

Подводные камни

  1. Не учли, что ведущий знает: основная ошибка. Информация об открытии = эвиденс, который меняет апостериор.
  2. «Симметрия из двух оставшихся дверей»: симметрии нет — ваша дверь не могла быть «отброшена» ведущим.
  3. Vos Savant ответ 1990 года вызвал бурю писем от профессоров математики, утверждавших, что 50/50 — даже эксперты ошибаются.
  4. Mark Haddon / реальные игры: вариации могут менять ответ. Уточнять правила.
  5. Обобщение на n дверей интуитивно понятнее (99/100 vs 1/100).

Эталонный ответ

Менять. Вероятность выиграть после смены — 2/3, без смены — 1/3.

Байес:

  • P(C_1 | H_3) = 1/3
  • P(C_2 | H_3) = 2/3

Ключевое: ведущий знает местоположение приза и не открывает дверь с призом. Это асимметричное условие, которое концентрирует вероятность на оставшейся неоткрытой двери.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти