Предположим, вы участвуете в телевизионной игре, перед вами три двери, за одной из них приз, за ​​двумя другими ничего нет. Вы получаете то, что находится за выбранной вами дверью.

Выбираете дверь, скажем, дверь №3, ведущий открывает другую дверь, дверь №1 например, и показывает, что там ничего нет.

Теперь у вас есть два варианта — остаться при своем выборе (дверь №3) или переключиться на дверь №2. Что бы вы сделали?

У вас есть две двери, за одной из них находится приз, не важно какую дверь вы выберете, у вас есть вероятность 1/2 выбрать дверь с призом. Правильно?

Неправильный!

Правильный ответ — вам нужно поменять двери местами, таким образом вы получите 2/3 вероятности выигрыша. Если вы останетесь со своим первоначальным выбором, вы получите 1/3 вероятности выигрыша.

Это действительно нелогичная ситуация, большинство людей не понимают, почему это так, и уверены, что у вас есть 1/2 вероятности выигрыша.

Попробуем взглянуть на эту проблему с несколько иной точки зрения, что помогло мне правильно разобраться в этой ситуации:

Предположим, вы завтра участвуете в игре и очень хотите выиграть приз. Но дверей три, а шанс выиграть всего 1/3, так что, скорее всего, вы вернетесь домой ни с чем. Если бы вы могли выбрать две двери вместо одной, ваши шансы были бы намного выше, но это не правила игры…

Эй, подожди, ты сможешь! Вы можете выбрать две двери!

Предположим, вы хотите выбрать и дверь №2, и дверь №3, вот как вы это делаете:

Вы лжете своему ведущему, вы говорите ведущему, что хотите выбрать дверь №1, затем ведущий открывает другую дверь, скажем, №3, и вы переключаете свой выбор и выбираете дверь №2.

На самом деле вы выбираете две двери ( 2 и 3 ). Если приз находится за одной из тех дверей, которые вы выиграли. Теперь ваши шансы стали намного выше (вероятность 2/3) :)

Для программистов среди нас вот программа на Python, которая имитирует 1000 запусков игры:

import random
stay_wins = 0
switch_wins = 0
play_times = 1000
for i in xrange(0,play_times):
    prize_door = random.randint(1, 3)
    your_choice = random.randint(1, 3)
opened_door = random.choice(list(set([1,2,3]) - set([prize_door, your_choice])))
switch_door = list(set([1,2,3]) - set([opened_door, your_choice]))[0]
    
    if your_choice == prize_door:
        stay_wins+=1
    
    if switch_door == prize_door:
        switch_wins+=1
    
print stay_wins
print switch_wins

Когда я запускаю этот код, я получаю 338кратный выигрыш от стратегии пребывания и 662кратного выигрыша от перехода. Так что определенно логичнее переключиться.

Если вы внимательно посмотрите на код, то увидите, что его можно упростить до такого:

import random
stay_wins = 0
switch_wins = 0
play_times = 1000
for i in xrange(0,play_times):
    if random.randint(1, 3) == random.randint(1, 3):
        stay_wins+=1
    else:
        switch_wins+=1
    
print stay_wins
print switch_wins

И здесь совершенно очевидно, что вероятность того, что два случайных числа в диапазоне от 1 до 3 будут одинаковыми, равна 1/3, а вероятность того, что они не будут одинаковыми, равна 2/3.