Задача Монти Холла: почему интуиция подводит
Содержание
Три двери. За одной — машина, за двумя — козы. Вы выбираете дверь 1. Ведущий (который знает, где машина) открывает одну из оставшихся — скажем, дверь 3 — и там коза. Он предлагает: «Хотите поменять выбор на дверь 2?»
Интуиция кричит: «Дверей теперь две, шансы 50/50, нет разницы». Интуиция ошибается. Менять выгодно: вероятность выиграть удваивается с до .
Почему так
Ключ — ведущий не случайный. Он знает расположение и всегда открывает дверь с козой. Эта информация меняет распределение вероятностей.
Обозначим:
- — «машина за дверью »,
- — «ведущий открыл дверь 3».
Изначально: .
Посчитаем :
- Если машина за дверью 1 (наш выбор) — ведущему всё равно, открыть 2 или 3, значит .
- Если машина за дверью 2 — ведущий обязан открыть 3 (не может раскрыть машину и не может открыть наш выбор): .
- Если машина за дверью 3 — ведущий её не откроет: .
По теореме Байеса:
.
Тогда:
А .
Поменять дверь — удвоить вероятность выигрыша.
На пальцах
Проще всего увидеть так: когда вы выбрали дверь 1, все вероятности «машина не там» распределены между дверями 2 и 3. Ведущий убирает одну заведомо пустую — и вся эта -вероятность стягивается на оставшуюся дверь. Ваша изначальная никуда не двинулась.
Визуально:
Исходное: [1/3] [1/3] [1/3]
Вы выбрали: [1/3] [ 2/3 ] ← на двух оставшихся
Ведущий убрал козу → вся масса стекает на оставшуюся дверь:
После: [1/3] [2/3] [--- ]
Симуляция
Если формулы не убеждают — симуляция убеждает всех:
import random
def play(switch: bool) -> bool:
car = random.randint(1, 3)
choice = random.randint(1, 3)
# Ведущий открывает дверь, которая не совпадает с выбором и не прячет машину
host_options = [d for d in (1, 2, 3) if d != choice and d != car]
host_opens = random.choice(host_options)
if switch:
choice = next(d for d in (1, 2, 3) if d != choice and d != host_opens)
return choice == car
N = 100_000
wins_stay = sum(play(switch=False) for _ in range(N))
wins_switch = sum(play(switch=True) for _ in range(N))
print(f"Не меняем: {wins_stay / N:.3f}") # ≈ 0.333
print(f"Меняем: {wins_switch / N:.3f}") # ≈ 0.667
Что спас условие «ведущий знает»
Сломайте это условие — и парадокс исчезнет. Если ведущий выбирает дверь случайно и иногда раскрывает машину (мы отбрасываем такие игры), то среди оставшихся игр условные вероятности уже и . Информация, которую вносит намеренное действие знающего агента, — и есть механика парадокса.
Почему это важно за пределами игры
Монти Холл — учебный пример того, что условные вероятности не совпадают с безусловными, и что апдейт веры на новой информации нужно делать аккуратно. Ровно этот же механизм работает в:
- диагностике (теорема Байеса для тестов на болезни),
- модерации (какова вероятность, что пользователь токсичный, при данном сигнале),
- fraud-детекции (ложноположительные срабатывания).
Интуиция натренирована на простых независимых событиях. Как только появляется агент, знающий больше вас, — доверять ей нельзя.