﻿import random  # 乱数を扱うためのモジュールをインポート
import math  # 数学関係の機能をまとめたモジュールをインポート
n = 100000  # 試行回数
card = [2, 4, 4, 8, 8, 8]  # カードの番号
X = [0] * n  # 取り出されたカードの番号の最小値を格納するリスト
random.seed(1)  # 乱数のシード値を固定
for i in range(n):
    # カードを2枚取り出す (※非復元抽出)
    selected_cards = random.sample(card, 2)
    X[i] = min(selected_cards)  # 2枚のカードの最小値をXに代入

# Xの平方根の期待値を表示
print(sum(math.sqrt(x) for x in X) / n)  # モンテカルロ法 
print(11*math.sqrt(2)/15 + 14/15)  # 参考：理論値