﻿import random  # 乱数を扱うためのモジュールをインポート
n = 200000  # 試行回数
X = [0] * n  # 行われた試合数を格納するリスト
random.seed(1)  # 乱数のシード値を固定
for i in range(n):
    winner = [0] * 5  # (j+1)回目の試合の勝者をwinner[j]に格納
    for j in range(5):
        winner[j] = random.choices(["A", "B"], [1/4, 3/4])[0]
        # AかBのどちらかが先に3勝したら試合終了
        if j >= 2 and (winner.count("A")==3 or winner.count("B")==3):
            X[i] = j+1  # (i+1)回目の試行で行われた試合数(j+1)を格納
            break

# 期待値E(1/(X-2))を表示
print(sum(1/(x-2) for x in X) / n)  # モンテカルロ法
print(175 / 256)  # 参考：理論値