#----------------------------------------------------------------------- # montehall.py #----------------------------------------------------------------------- import stdio import sys import random # Accept integer n as a command-line argument. Play the Monte Hall game # n times with the switching strategy and report the fraction of games # won to standard output. Note: The true winning probability is 2/3. n = int(sys.argv[1]) # number of trials wins = 0 # number of times you win by switching # Repeat the experiment n times; for i in range(0, n): # Host hides prize behind 1 of 3 doors uniformly at random. prize = random.randrange(0, 3) # Contestant selects 1 of 3 doors uniformly at random. choice = random.randrange(0, 3) # At random, host reveals an unchosen door not containing prize. reveal = random.randrange(0, 3) while (reveal == choice) or (reveal == prize): reveal = random.randrange(0, 3) # Hack to compute the remaining door which contestent switches to. other = 0 + 1 + 2 - reveal - choice # Switching leads to a win? if other == prize: wins += 1 # Avoid integer division. fractionWon = float(wins) / float(n) # Write the result. stdio.writeln('Fraction of games won = ' + str(fractionWon)) #----------------------------------------------------------------------- # python montehall.py 100 # Fraction of games won = 0.62 # python montehall.py 1000 # Fraction of games won = 0.666 # python montehall.py 10000 # Fraction of games won = 0.6562 # python montehall.py 100000 # Fraction of games won = 0.6697