﻿import numpy as np  # モジュールNumpyをnpという名前でインポート
n = 100000  # 試行回数
np.random.seed(1)  # 乱数のシード値を固定
mX = np.random.multinomial(10, [1/6] * 6, size = n)  # 多項分布に従う乱数
X = mX[:, 5]  # 6の目が出る回数
Y = mX[:, 4] + mX[:, 5]  # 5または6の目が出る回数
Z = mX[:, 0] + mX[:, 2] + mX[:, 4]  # 奇数の目が出る回数
# E(Y)を表示
print(np.mean(Y))  # モンテカルロ法
print(10 / 3)  # 参考：理論値
# V(Y)を表示
print(np.var(Y))  # モンテカルロ法
print(20 / 9)  # 参考：理論値
# cov(X, Z)を表示
print(np.cov(X,Z)[0,1])  # モンテカルロ法
print((5 / 6) * (-1))  # 参考：理論値
# cov(X, Y)を表示
print(np.cov(X,Y)[0,1])  # モンテカルロ法
print(10 / 9)  # 参考：理論値