看板 Statistics 關於我們 聯絡資訊
我想用 簡單的 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