﻿rm(list = ls())  # ワークスペースをクリア
n <- 200000  # 試行回数
X <- numeric(n)  # A君のカードの数字を格納するベクトル
Y <- numeric(n)  # B君のカードの数字を格納するベクトル
set.seed(1)  # 乱数のシード値を固定
for (i in 1:n) {
  cards <- c(-2, -1, -1, 2)  # 4枚のカードの情報
  # A君が抜き出すカードの添え字を{1,2,3,4}から無作為に選ぶ
  k_a <- sample(1:4, 1)  
  X[i] <- cards[k_a]
  cards <- cards[-k_a]  # cardsからcards[k_a]を取り除く
  # B君が抜き出すカードの添え字を{1,2,3}から無作為に選ぶ
  k_b <- sample(1:3, 1)  
  Y[i] <- cards[k_b]
}
# モンテカルロ法で求めたE(XY)を表示 (※参考：理論値は-1/2)
mean(X * Y)
# モンテカルロ法で求めたE(X)E(Y)を表示 (※参考：理論値は1/4)
mean(X) * mean(Y)
# モンテカルロ法で求めたV(X+Y)を表示 (※参考：理論値は3)
var(X + Y)
# モンテカルロ法で求めたV(X)+V(Y)を表示 (※参考：理論値は9/2)
var(X) + var(Y)