Commit daf4fa15 authored by Adam Blank's avatar Adam Blank
Browse files

Add new file

parent 2e8187ef
No related merge requests found
Showing with 56 additions and 0 deletions
+56 -0
from collections import Counter
from enum import Enum
from fractions import Fraction
import random
DoorOption = Enum('DoorOption', ['GOAT', 'CAR'])
Situation = list[DoorOption]
def generate_situation(N=3) -> Situation:
output: Situation = []
...
return output
def choose_door_number(situation: Situation, disallowed: set[int]):
choices = list(range(len(situation)))
for x in disallowed:
choices.remove(x)
return random.choice(choices)
def play_game(situation: Situation, use_switch_strategy=True) -> bool:
choice: int = choose_door_number(situation, set())
...
return False
NUM_DOORS = 8
games_played = 0
wins: Counter[str] = Counter()
def actual_probability(doors):
return str((doors - 1)) + '/' + str((doors * (doors - 2))) + " = " + str((((doors - 1)) / ((doors * (doors - 2)))))
def frac(num, dem):
return Fraction(num, dem).limit_denominator(NUM_DOORS * NUM_DOORS)
while True:
situation = generate_situation(NUM_DOORS)
if play_game(situation, True):
wins['switch'] += 1
if play_game(situation, False):
wins['stay'] += 1
games_played += 1
if games_played % 10000 == 0:
print("\033c", end="", flush=True)
print("stay :", frac(
wins['stay'], games_played), "= " + str(wins['stay'] / games_played))
print("switch (exp):", frac(
wins['switch'], games_played), "= " + str(wins['switch'] / games_played))
print("switch (act):", actual_probability(NUM_DOORS))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment