二重指数分布を使用して標準法線を生成するためのコードを作成しようとしています。言い換えると、
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)
}
何が間違っているのかよくわかりませんが、 Error:no function to return from, jumping to top level を受け取ります
そして、それはプロットしません。コードを修正するための提案はありますか?
ありがとう!