首页 > 代码库 > 逆分布函数法生成随机数(指数分布) R语言实现
逆分布函数法生成随机数(指数分布) R语言实现
先说明一下符号:U(0,1)-均匀分布,”~“表示服从xxx分布,F(x),为需要生成的随机数的分布函数,invF(x)表示逆分布函数,那么算法步骤如下:
step 1: 产生 u~U(0,1)
step 2:计算X=invF(u)
那么X就是服从分布函数为F(x)的随机数,一个简单的证明:
证明: P(X<y)=P(invF(u)<y)=P(u<F(y))=F(y); 证毕。
你会感觉好简单啊,对是很简,下面就给出常用的指数分布
首先,指数分布的分布函数:
F(x)=1-exp(-lamda*x);x>0( lamda 为参数)
因此逆分布函数:
invF(x)=-(1/lamda)*ln(1-x);0<x<1
所以随机数数产生过程:
step 1:产生u~U(0,1)
step 2: 计算X=-ln(1-u)
得到随机数
x <- runif(100) lamda <- 0.1 U <- runif(100) lamda <- 0.1 X <- -1/lamda * log(U) hist(X,prob=T,col=gray(0.9), main="exp from uniform") curve(dexp(x,lamda),add=T,col="red")
逆分布函数法生成随机数(指数分布) R语言实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。