Created
July 30, 2012 04:48
-
-
Save ryansturmer/3204766 to your computer and use it in GitHub Desktop.
Python Simulation of the Monty Hall Problem for N-Doors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Monty Hall Problem Simulation | |
# Author: Ryan Sturmer | |
# | |
import random | |
def play_round(doors, switch): | |
# Choose the location of the car | |
car = random.randint(1, doors) | |
# Contestant chooses a door | |
initial_choice = random.randint(1, doors) | |
# Monty opens ALL the other doors except one | |
if initial_choice != car: | |
monty_leaves = car # If the car wasn't chosen, Monty is forced to reveal its location | |
else: | |
while True: | |
monty_leaves = random.randint(1, doors) | |
if monty_leaves != initial_choice: | |
break | |
# monty_leaves is now the door that Monty DIDN'T open | |
if switch: | |
final_choice = monty_leaves | |
else: | |
final_choice = initial_choice | |
victory = (final_choice == car) | |
return victory, initial_choice, final_choice, car | |
def simulation(iterations, doors=3): | |
games_won_switch = 0 | |
games_won_noswitch = 0 | |
for i in range(iterations): | |
won_game, intial_choice, final_choice, car = play_round(doors, False) | |
if(won_game): | |
games_won_noswitch += 1 | |
won_game, intial_choice, final_choice, car = play_round(doors, True) | |
if(won_game): | |
games_won_switch += 1 | |
print "" | |
print " Monty Hall Simulation" | |
print "---------------------------------------------" | |
print " Iterations: %d" % iterations | |
print " Games won when switching doors: %d (%g%%)" % (games_won_switch, 100*float(games_won_switch)/float(iterations)) | |
print "Games won when NOT switching doors: %d (%g%%)" % (games_won_noswitch, 100*float(games_won_noswitch)/float(iterations)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment