我正在尝试模拟以下分布的数据10000观察结果:
{ 3x(1-x)2 0 < x < 1
f(x) = { 3(2-x)(1-x)2 1 ≤ x < 2
{ 0 otherwise
使用拒绝方法,我通过以下矩形装箱发行版:x=0,x=2,y=0,y=2
但是,我的代码中存在一些错误,因为它似乎无法正常工作。任何人都可以提出修复建议吗?
n=10000
t=0
x=0
while(t<n)
{u=runif(1,0,2)
y=runif(1,0,2)
if {(u in c(0:1))
fun=3*u*(1-u)^2
else (u in c(1:2))
fun=3*(2-u)*(1-u)^2}
if (y<fun)
{t=t+1
x[t]=u}}
答案 0 :(得分:1)
你有一堆R语法错误。您应该查看基本的R介绍。小心放置牙箍。 R中也没有in
个关键字。
n <- 10000
t <- 0
x <- 0
while(t<n) {
u <- runif(1,0,2)
y <- runif(1,0,2)
if (u > 0 & u < 1) {
fun <- 3*u*(1-u)^2
} else if (u >= 1 & u < 2) {
fun <- 3*(2-u)*(1-u)^2
} else {
fun <- 0
}
if (y<fun){
t <- t+1
x[t] <- u
}
}