从拉普拉斯分布生成随机数
我一直试图从双指数(拉普拉斯)分布生成随机数。 我现在可以写代码了。 任何帮助,将不胜感激。 下面的代码是我写的。
rlaplace = function(u,a,b){
u = c(runif(ns))
for(i in 1:ns){
if(u[i] <= 0.5){
X = a+b*log(2*u)
} else{
X = a-b*log(2*(1-u))
}
}
X
}
z1 = rlaplace(u,a,b)
从概率分布CRAN任务视图中,有几个已经实现了拉普拉斯分布的包,特别是distr和Runuran。
所以你应该能够安装distr
,例如,做一些事情:
library(distr)
D <- DExp(rate = 1)
r(D)(1)
代码取自DExp-class
帮助页面的示例。
尝试这个?
#Using pdf for a laplace RV:
#F(y) = 1/sqrt(2*sigma^2)*exp(sqrt(2)*abs(y-mu)/sigma)
rlaplace = function(n,mu,sigma){
U = runif(n,0,1)
#This will give negative value half of the time
sign = ifelse(rbinom(n,1,.5)>.5,1,-1)
y = mu + sign*sigma/sqrt(2)*log(1-U)
y
}
链接地址: http://www.djcxy.com/p/24825.html
上一篇: Generating random numbers from the Laplace distribution