我正在尝试使用双指数分布编写用于生成标准法线的代码。换句话说,
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)
}
我不太确定我做错了什么,但我收到了错误:没有返回的功能,跳到顶层
它没有阴谋。有任何修改我的代码的建议吗?
谢谢!