Python Puzzles
Run a simulation of the Monty Hall problem.
Probability of winning if you switch: 0.666391
Probability of winning if you don't switch: 0.333692
import random def monty_hall(simulations=100000, switch=True): win_count = 0 for _ in range(simulations): doors = [0, 0, 1] # 0 represents a goat, 1 represents a car random.shuffle(doors) # the car is randomly placed # Contestant's initial choice initial_choice = random.choice([0, 1, 2]) # Monty opens a door monty_choice = [i for i in range(3) if i != initial_choice and doors[i] != 1][0] # Contestant's final choice (switch or don't switch) final_choice = (set([0, 1, 2]) - set([initial_choice, monty_choice])).pop() if switch else initial_choice if doors[final_choice] == 1: win_count += 1 return win_count / simulations # Run the simulations print("Probability of winning if you switch:", monty_hall(simulations=1000000, switch=True)) print("Probability of winning if you don't switch:", monty_hall(simulations=1000000, switch=False))