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

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

#所有服从个特定分布的随机数皆在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
}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值