产生服从特定分布的随机数

很多时候,对于现实生活中的问题,不能具体化,找不到实际问题的具体变量。此时,可以考虑蒙特卡罗模拟,此主要的思想就是产生符合某一问题的大量随机数,进而对随机数进行研究分析。

#所有服从个特定分布的随机数皆在U(0,1)均匀随机数的基础变换而得来。


n <- 1000


m <- runif(n,0,1)


#逆变换法 eg:求服从指数分布的随机数,参数λ为1.其分布函数为y = 1- e^-x,其反函数g = - ln(1-u)
#逆变换法的主要思想为,对于连续行变量的分布函数F(x)服从0,1均匀分布
u <- runif(500,0,1)


g <- -log(1-u)


hist(g)




#对于零散型随机变量的产生,同样可以用逆变换法产生,eg:二项分布
u1 <- runif(400)


u2 <- as.integer(u1>0.6)


#舍选法,最大值M,x的取值区间[a,b]
while(y <= u2) {
  u1 <- u*(b-a)+a
  y <- f(u1)
  u2 <- M*u
}

你可能感兴趣的:(产生服从特定分布的随机数)