From bfd1b26a28a9d596114c429862491c469552128c Mon Sep 17 00:00:00 2001 From: GaugeAndGravity Date: Thu, 2 Nov 2023 10:11:27 -0400 Subject: [PATCH] working version --- coin.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 coin.py diff --git a/coin.py b/coin.py new file mode 100644 index 0000000..2ee4fa6 --- /dev/null +++ b/coin.py @@ -0,0 +1,36 @@ +import numpy as np +rng = np.random.default_rng() + +class Player: + def __init__(self) -> None: + pass + def play(self): + n = 1 + while True: + if np.random.randint(2): + return n + else: + n += 1 + +class Simulator: + def __init__(self, N:int) -> None: + self.player = Player() + self.N = N + def simulation(self) -> list: + total = 0 + for _ in range(self.N): + total += self.player.play() + return total + def output(self, n:int) -> None: + results = np.array([self.simulation() for _ in range(n)]) + wins = np.full(n, self.N) + wr = wins/results + print(f"finished {n} times of simulation!") + print("for total plays:\n\tmean\tstd") + print(f"\t{np.mean(results)}\t{np.std(results)}") + print("for win rates:\n\tmean\tstd") + print(f"\t{np.mean(wr)}\t{np.std(wr)}") + +sim = Simulator(1) +sim.output(100000) +print(np.log(2))