# 棄却法 # 乱数の個数 n <- 1000 # 確率密度関数 f(x) f <- function(x) { return(dnorm(x)) } # 棄却法 rejection <- function(a, b, c) { while (1) { x <- runif(1, a, b) y <- runif(1, 0, c) if (y <= f(x)) {return(x)} } } r <- replicate(n, rejection(-10, 10, 1)) print(r) # ヒストグラム(相対度数) hist(r, freq = FALSE, main = "棄却法による乱数") # N(0,1)の曲線との比較 curve(dnorm, add = TRUE, col = "red")