на коленке слабал симулятор нашей ситуации.
Это питон, можно прям в консоли запускать у кого есть.
Скопировали, обозвали например doors_sim.py, запускаем python doors_sim.py
Спросит кол-во дверей (3 или больше). Начинайте с 3, 4, 5 и т.д. Миллион не надо - уж больно низкая вероятность

Вводим 3.
Спросит кол-во симуляций - вводите тысячу или больше, чтобы усреднить. Можете поиграться и вводить меньше.
Спросит тип симуляции - менять решение или не менять. 1 или 2.
Что будет происходить:
Тысячу раз или сколько вы задали, с тем кол-вом дверей что вы задали будет происходить точно то, что в задаче,
и условный вы будет либо менять решение, либо не менять - как вы задали.
И результат будет выводиться в виде
correct = правильных_ответов from кол_во_симуляций, percent = процент
Ну либо поменяйте сообщения на русский - там все просто.
import random
doors_amount = int(raw_input('doors amount (enter 3 or more)\n-->'))
simulation_number = int(raw_input('simulations amount (well, some 10000 or so should be enought\n just be resonable)\n-->'))
guessed_correctly = 0
simulation_type = int(raw_input('simulation type?:\n 1 - always keep \n 2 - always change\n-->'))
doors = range(1,doors_amount+1)
for i_sim in xrange(simulation_number):
treasure_door = doors[random.randint(0,len(doors)-1)]
guessed_door = doors[random.randint(0,len(doors)-1)]
if simulation_type == 1:
# no changes in guessing
guessed_correctly = guessed_correctly + 1 if guessed_door == treasure_door else guessed_correctly
else:
# changing in guessing
if guessed_door == treasure_door:
# guess were correct, so hero will miss treasure
pass
else:
# host knows guess were incorrect and randomly select one of the other empty doors.
# In case of 3 doors it's obvious that hero will get treasure,
# but we can have more then 3, so let's simulate
doors_to_exclude_from = filter(lambda i: i not in [treasure_door, guessed_door], doors)
excluded_door = doors_to_exclude_from[random.randint(0, len(doors_to_exclude_from)-1)]
doors_to_guess_from = filter(lambda i: i not in [excluded_door, guessed_door], doors)
new_guessed_door = doors_to_guess_from[random.randint(0, len(doors_to_guess_from)-1)]
guessed_correctly = guessed_correctly + 1 if new_guessed_door == treasure_door else guessed_correctly
print 'correct = %s from %s, percent = %s' % (guessed_correctly, simulation_number, float(guessed_correctly)/float(simulation_number))