Парадок Монти-Холла -> симуляция

Попался мне на одном канале сюжет про парадокс Монти-Холла. Про ту игру, в которой три двери, за которыми автомобиль и две козы. Давным-давно я даже по телевизору это видел, вроде бы.

Захотелось вспомнить детство, когда я на “ZX Spectrum” написал симулятор игры в казино, где проверялась стратегия удвоения ставок (мартингейл), которую я тогда и придумал.

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

import random
import time

#################################
player_allways_change_door = True
#################################

game_number = 0
successful_guessing = 0

while game_number < 10999:

    game_number += 1
    doors = ["car", "goat", "goat"]
    random.shuffle(doors)
    print()
    print()
    print(f"All closed doors: {doors}")
    
    choices_list = [0, 1, 2]
    player_choice = random.choice(choices_list)
    print(f"Player select door number {player_choice+1}")
    
    host_choices_list = [0, 1, 2]
    host_choices_list.remove(doors.index('car'))
    
    if doors[player_choice] == 'car':
        host_open_choice = random.choice(host_choices_list)
    else:
        host_choices_list.remove(player_choice)
        host_open_choice = random.choice(host_choices_list)  # always 1 element left
    
    print("Host opened one door with goat")
    doors[host_open_choice] = 'GOAT (visible)'
    print(f"Doors: {doors}")


round2_choices_list = choices_list
round2_choices_list.remove(host_open_choice)

if player_allways_change_door:
    print(f"Player decided to change first choice {player_choice+1} to ", end="")
    round2_choices_list.remove(player_choice)
    player_choice = random.choice(round2_choices_list)  # always 1 element left
    print(player_choice+1)

if doors[player_choice] == 'car':
    successful_guessing += 1

success_rate = successful_guessing/game_number*100
print(f'Games: {game_number}, success {successful_guessing} ({success_rate:.2f}%).')

# time.sleep(1)

Заодно и на гитхаб его залил. Вдруг кому-то пригодится, а то, судя по комментариям к ролику, у многих есть когнитивный диссонанс по этому поводу.