import Random  # 乱数を扱うためのモジュールをインポート
n = 300000  # 試行回数
# A，B，C，Dの4人とも自分の名刺が入った封筒を選んだ状態
individual_cards = ["card_A", "card_B", "card_C", "card_D"]
# ベクトルxには，全員が他人の名刺が入った封筒を選んだ場合は1を格納し，
# そうでない場合は0を格納する．
x = zeros(n)  # 初期状態では，xはn次元零配列
Random.seed!(1)  # 乱数のシード値を固定
for i in 1:n
    # カードを無作為に4枚選ぶ
    selected_cards = Random.shuffle(individual_cards)
    # 全員が他人の名刺が入った封筒を選んだ場合
    if all(selected_cards .!= individual_cards)
        x[i] = 1  # 第i成分を0から1に変更
    end
end
# 確率の表示
println(sum(x) / n)  # モンテカルロ法
println(3/8)  # 参考：理論値