﻿rm(list = ls())  # ワークスペースをクリア
n <- 100000  # 試行回数
set.seed(1)  # 乱数のシード値を固定
X <- runif(n)  # U(0,1)に従う乱数をn個生成し，Xに代入
Y <- (2 - 2 * X) * runif(n)  # U(0,2-2X)に従う乱数をn個作成し，Yに代入
# モンテカルロ法で求めた期待値E(Y)を表示 (参考：理論値は0.5)
mean(Y)
# Yのヒストグラムを描く
hist(Y, freq = FALSE)
# Yの周辺密度関数
h <- function(y) {
  if (0 <= y && y <= 2) {
    return(-(1 / 2) * log(y / 2))
  } else {
    return(0)
  }
}
vh <- Vectorize(h)  # スカラー関数をベクトル化
# YのヒストグラムにYの周辺密度関数のグラフを重ねて描画し，両者を比較
curve(vh, add = TRUE)