# パッケージがインストール済なら次の行は不要
# import Pkg; Pkg.add("Statistics")  
using Statistics
import Random  # 乱数を扱うためのモジュールをインポート
n = 200000  # 試行回数
X = zeros(n)  # A君のカードの数字を格納する配列
Y = zeros(n)  # B君のカードの数字を格納する配列
Random.seed!(1)  # 乱数のシード値を固定
for i in 1:n
    cards = [-2, -1, -1, 2]  # 4枚のカードの情報
    # A君が抜き出すカードの添え字を{1,2,3,4}から無作為に選ぶ
    k_a = rand(1:4)
    X[i] = cards[k_a]
    cards = cards[setdiff(1:4, k_a)]  # cardsからcards[k_a]を取り除く
    # B君が抜き出すカードの添え字を{1,2,3}から無作為に選ぶ
    k_b = rand(1:3)
    Y[i] = cards[k_b]
end
# モンテカルロ法で求めたE(XY)を表示 (※参考：理論値は-1/2)
println(mean(X .* Y))
# モンテカルロ法で求めたE(X)E(Y)を表示 (※参考：理論値は1/4)
println(mean(X) * mean(Y))
# モンテカルロ法で求めたV(X+Y)を表示 (※参考：理論値は3)
println(var(X + Y))
# モンテカルロ法で求めたV(X)+V(Y)を表示 (※参考：理論値は9/2)
println(var(X) + var(Y))