# パッケージがインストール済なら次の行は不要
#  import Pkg; Pkg.add("StatsBase")
using StatsBase
using Random　# 乱数を扱うためのモジュールをインポート
n = 200000  # 生産する製品の個数
n_a = 0  # 機械Aで作られる不良品の個数
n_b = 0  # 機械Bで作られる不良品の個数
n_c = 0  # 機械Cで作られる不良品の個数
Random.seed!(1)  # 乱数のシード値を固定
for i in 1:n
    # 製品を製造する機械をA, B, Cから選択
    m = sample(["A", "B", "C"], ProbabilityWeights([20/100, 35/100, 45/100]))
    if m == "A"
        # 機械Aで製造（0が正規品, 1が不良品）
        prod = sample([0, 1], ProbabilityWeights([94/100, 6/100]))
        if prod == 1
            n_a += 1  # 機械Aで作られる不良品の個数をカウント
        end
    elseif m == "B"
        # 機械Bで製造（0が正規品, 1が不良品）
        prod = sample([0, 1], ProbabilityWeights([96/100, 4/100]))
        if prod == 1
            n_b += 1  # 機械Bで作られる不良品の個数をカウント
        end
    else
        # 機械Cで製造（0が正規品, 1が不良品）
        prod = sample([0, 1], ProbabilityWeights([98/100, 2/100]))
        if prod == 1
            n_c += 1  # 機械Cで作られる不良品の個数をカウント
        end
    end
end
# 不良品が機械Aで作られた確率を表示
println( n_a / (n_a + n_b + n_c) )  # モンテカルロ法
println(12 / 35)  # 参考：理論値