Monty Hall problem: Difference between revisions

Line 2,443:
door = [False]*doorCount
# One door with prize
door[randrange(doorCount)] = True
 
chosen = door[choice]
 
unpicked = door
del unpicked[choice]
 
# Out of those unpicked, the alternative is either:
Line 2,454 ⟶ 2,448:
# an empty door if the initial choice is actually the prize.
alternative = True in unpicked
 
if switch:
return alternative
else:
return chosen
 
print "\nMonty Hall problem simulation:"
print doors, "doors,", iterations, "iterations.\n"
 
print "Not switching allows you to win",
print sum(monty_hall(randrange(3), switch=False)
for x in range(iterations)),
print "out of", iterations, "times."
print "Switching allows you to win",
print sum(monty_hall(randrange(3), switch=True)
for x in range(iterations)),
print "out of", iterations, "times.\n"</lang>
Sample output:
<pre>Monty Hall problem simulation:
3 doors, 100000 iterations.
 
Not switching allows you to win 33337 out of 100000 times.
Switching allows you to win 66529 out of 100000 times.</pre>
 
 
 
===Python 3 version: ===
Another (simpler in my opinion), way to do this is below, also in python 3:
<lang python>import random
#1 represents a car
#0 represent a goat
 
stay = 0 #amount won if stay in the same position
switch = 0 # amount won if you switch
 
for i in range(1000):
lst = [1,0,0] # one car and two goats
random.shuffle(lst) # shuffles the list randomly
ran = random.randrange(3) # gets a random number for the random guess
 
user = lst[ran] #storing the random guess
 
del(lst[ran]) # deleting the random guess
 
huh = 0
for i in lst: # getting a value 0 and deleting it
if i ==0:
del(lst[huh]) # deletes a goat when it finds it
break
huh+=1
if user ==1: # if the original choice is 1 then stay adds 1
stay+=1
if lst[0] == 1: # if the switched value is 1 then switch adds 1
switch+=1
 
print("Stay =",stay)
print("Switch = ",switch)
#Done by Sam Witton 09/04/2014</lang>
 
=={{header|R}}==