﻿# パッケージがインストール済なら次の行は不要
# import Pkg; Pkg.add("StatsBase") 
import Random  # 乱数を扱うためのモジュールをインポート
using StatsBase
n = 200000  # 試行回数
X = zeros(n)  # 行われた試合数を格納する配列
Random.seed!(1)  # 乱数のシード値を固定
for i in 1:n
    winner = fill("", 5)  # j回目の試合の勝者をwinner[j]に格納
    for j in 1:5
        winner[j] = sample(["A", "B"], ProbabilityWeights([1/4, 3/4]))
        # AかBのどちらかが先に3勝したら試合終了
        if ((count(winner .== "A") == 3) || (count(winner .== "B") == 3))
            X[i] = j  # i回目の試行で行われた試合数jを格納
            break
        end
    end
end
# 期待値E(1/(X-2))を表示
println(mean(1 ./ (X .- 2)))  # モンテカルロ法
println(175 / 256)  # 参考：理論値