# パッケージがインストール済なら次の行は不要
# import Pkg; Pkg.add(["Statistics","Plots"])
using Statistics, Plots
import Random  # 乱数を扱うためのモジュールをインポート
n = 100000  # 試行回数
Random.seed!(1)  # 乱数のシード値を固定
X = rand(n)  # U(0,1)に従う乱数をn個生成し，Xに代入
Y = (2 .- 2 .* X) .* rand(n)  # U(0,2-2X)に従う乱数をn個生成し，Yに代入
# モンテカルロ法で求めた期待値E(Y)を表示 (参考：理論値は0.5)
println(mean(Y))
# Yの周辺密度関数
function h(y)
    if 0 < y <= 2
        return -(1/2) * log(y/2)
    else
        return 0
    end
end
# Yのヒストグラムを描画
histogram(Y, normalize=:pdf, color=:white, legend=false)
# 0.01以上2以下の数を等間隔に200個取る
y_vals = collect(0.01:0.01:2)
# YのヒストグラムにYの周辺密度関数を重ねて描画
vf = h.(y_vals)
plot!(y_vals, vf)
# 描画する範囲を微調整
xlims!(0, 2)
ylims!(0, 2.5)