作者laba1014 (I-20快点来)
站内Statistics
标题[程式] R repeat
时间Mon May 10 05:42:51 2010
我想用 简单的 accept/reject algorithm 生样本
作法 Step 1 : generate x ~ uniform (0,1) ; y ~ uniform(-1,1)
Step 2 : IF x < 0.5*(1+sin(2*pi*y) , let z = y ;
otherwise, return to Step 1
以下是我自己写的程式
z <- repeat
{
x <- runif(1,0,1)
y <- runif(1,-1,1)
if (x < 0.5*(1+sin(2*pi*y))) {break}
{z <- y}
}
我的问题在於有时候 z 会跑出 NULL
我知道写错了 但不知道错在哪 =.=|||
能否烦请知情的版友告诉我该怎麽改
程式才会每次都跑出数据呢? 谢谢
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.18.10
※ 编辑: laba1014 来自: 61.230.18.10 (05/10 06:14)
※ 编辑: laba1014 来自: 61.230.18.10 (05/10 06:23)
1F:→ clickhere:if (x < 0.5*(1+sin(2*pi*y))){ z<-y; break; } 05/10 07:23
2F:→ laba1014:很抱歉 C大 我试了你的方法还是会有NULL Orz 05/10 07:32
※ 编辑: laba1014 来自: 61.230.18.10 (05/10 07:33)
3F:→ lin15:repeat{x <- runif(1,0,1);y <- runif(1,-1,1);if (x < 0.5 05/10 09:39
4F:→ lin15:*(1+sin(2*pi*y))){ z<-y; break; }} 05/10 09:40
5F:→ clickhere:repeat是flow control,不是function. 05/10 10:18
6F:→ laba1014:谢谢楼上两位前辈 我知道问题出在哪了 都是我乱搞 Orz 05/10 14:25
7F:→ laba1014:真的非常感谢 <(_ _)> 05/10 14:25