作者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)
→ clickhere:if (x < 0.5*(1+sin(2*pi*y))){ z<-y; break; } 05/10 07:23
→ laba1014:很抱歉 C大 我試了你的方法還是會有NULL Orz 05/10 07:32
※ 編輯: laba1014 來自: 61.230.18.10 (05/10 07:33)
→ lin15:repeat{x <- runif(1,0,1);y <- runif(1,-1,1);if (x < 0.5 05/10 09:39
→ lin15:*(1+sin(2*pi*y))){ z<-y; break; }} 05/10 09:40
→ clickhere:repeat是flow control,不是function. 05/10 10:18
→ laba1014:謝謝樓上兩位前輩 我知道問題出在哪了 都是我亂搞 Orz 05/10 14:25
→ laba1014:真的非常感謝 <(_ _)> 05/10 14:25