﻿import random  # 乱数を扱うためのモジュールをインポート
n = 200000 # 生産する製品の個数 (試行回数)
n_a = 0  # 機械Aで作られる不良品の個数
n_b = 0  # 機械Bで作られる不良品の個数
n_c = 0  # 機械Cで作られる不良品の個数
random.seed(1)  # 乱数のシード値を固定
for i in range(n):
    # 製品を製造する機械をA，B，Cから選択
    m = random.choices(['A','B','C'], weights = [20,35,45], k=1)[0]
    if m == 'A':
        # 機械Aで製造（0が正規品, 1が不良品）
        prod = random.choices([0,1], weights=[94,6], k=1)[0] 
        if prod == 1:
            n_a += 1  # 機械Aで作られる不良品の個数をカウント
    elif m == 'B':
        # 機械Bで製造（0が正規品, 1が不良品）
        prod = random.choices([0,1], weights=[96,4], k=1)[0]
        if prod == 1:
            n_b += 1  # 機械Bで作られる不良品の個数をカウント
    else:
        # 機械Cで製造（0が正規品, 1が不良品）
        prod = random.choices([0,1], weights=[98,2], k=1)[0]
        if prod == 1:
            n_c += 1  # 機械Cで作られる不良品の個数をカウント

# 不良品が機械Aで作られた確率を表示
print(n_a / (n_a + n_b + n_c))  # モンテカルロ法
print(12 / 35)  # 参考：理論値