-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmonty_hall.py
More file actions
56 lines (47 loc) · 1.49 KB
/
monty_hall.py
File metadata and controls
56 lines (47 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from random import randint
def simulate_prizedoor(nsim):
#compute here
answer = []
for i in range(0,nsim):
answer.append(randint(0,2))
return answer
def simulate_guess(nsim):
guess = []
for i in range(0,nsim):
guess.append(randint(0,2))
return guess
def goat_door(prizedoors, guesses):
answer = []
all_answers = [0,1,2]
for p_g in zip(prizedoors,guesses):
lpg = list(p_g)
ans = list(set(all_answers) - set(lpg))
if len(ans)>1:
answer.append(ans[randint(0,1)])
else:
answer.append(ans[0])
return answer
def switch_guess(guesses, goatdoors):
answer = []
all_answers = [0,1,2]
for g_g in zip(guesses,goatdoors):
lgg = list(g_g)
ans = list(set(all_answers) - set(lgg))
if len(ans)>1:
answer.append(ans[random.randint(0,1)])
else:
answer.append(ans[0])
return answer
def win_percentage(guesses, prizedoors):
total = len(prizedoors)
count = 0
for i in range(0,total):
if guesses[i] == prizedoors[i]:
count += 1
return round(float(count)/float(total) *100,3)
guesses = simulate_guess(10000)
prizedoors = simulate_prizedoor(10000)
goatdoors = goat_door(prizedoors, guesses)
switched_guesses = switch_guess(guesses,goatdoors)
print 'win percentage for keeping your guess is', win_percentage(guesses,prizedoors)
print 'win percentage for switching your guess is', win_percentage(switched_guesses,prizedoors)