我正在尝试编写使用双指数分布生成标准法线的代码。换句话说,
x
是一个双指数,我已经在这里正确编码:
double.exponential.rv<-function(i)
{
u<-runif(1)
x<--log(1-u)
v<-runif(1)
if (v<.5) x<-(-x)
return(x)
}
在哪里i=1
y
0
是从到的正态分布(sqrt(exp(1)/(2*pi)))*exp(-abs(x)))
到目前为止,我的代码是这样的:
std.normal.rv<-function(i)
{
while(1)
{
x<-double.exponential.rv(1)
y<-runif(1)*(sqrt(exp(1)/(2*pi)))*exp(-abs(x))
if (y<=(sqrt(exp(1)/(2*pi)))*exp(-abs(x))) return(x)
}
hist(x,nclass=100,freq=FALSE)
}
我不太确定我做错了什么,但我收到错误:没有要返回的函数,跳转到顶层
它没有情节。有什么建议可以修复我的代码吗?
谢谢!