Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint, random, choice
- class MontyHallDoors():
- def __init__(self):
- self.doors = [0 for i in range(3)]
- self.car_door = randint(0,2)
- self.doors[self.car_door] = 1
- def is_car_door(self,i):
- return self.doors[i] == 1
- def get_car_door(self):
- return self.car_door
- def __str__(self):
- l = []
- for i in range(3):
- if self.is_car_door(i):
- l.append("car")
- else:
- l.append("goat")
- return "[{}, {}, {}]".format(l[0],l[1],l[2])
- stay_attempts = []
- switch_attempts = []
- for i in range(100000):
- monty = MontyHallDoors()
- car_door = monty.get_car_door()
- # pick first door for the contestant
- first_door = randint(0,2)
- # offer the switch
- if(first_door == car_door):
- open_door = choice([i for i in range(3) if i != first_door])
- else:
- open_door = 3 - first_door - car_door
- offered_door = 3 - first_door - open_door
- # pick your strategy: stay or switch
- stay_mode = random() <= 0.5
- # do the switch if decided to
- chosen_door = offered_door if not stay_mode else first_door
- # check if door is correct and append to the correct strat
- if(stay_mode):
- stay_attempts.append(car_door == chosen_door)
- else:
- switch_attempts.append(car_door == chosen_door)
- #print(monty)
- #print("Mode: {}".format("stay" if stay_mode else "switch"))
- #print("first door: {}".format(first_door))
- #print("final door: {}".format(chosen_door))
- #print("Result: {}".format("Win" if car_door == chosen_door else "lose"))
- stay_winning_chance = 1.0*len([0 for i in range(len(stay_attempts)) if stay_attempts[i]])/len(stay_attempts)
- switch_winning_chance = 1.0*len([0 for i in range(len(switch_attempts)) if switch_attempts[i]])/len(switch_attempts)
- print(stay_winning_chance, switch_winning_chance)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement