1
max.simu <- 1000 # max simulation trials
v.simu <- 0*1:max.simu # initialize trials
barrier.level1 <- 10 # barrier level
barrier.level2 <- -10
v.simu[1] <- rnorm(1) # first simulation value
sim.index <- 2 # initialize simulation index
while ((sim.index <= max.simu) &&
(v.simu[sim.index - 1] < barrier.level1 &&
v.simu[sim.index - 1] > barrier.level2)){
v.simu[sim.index] <- v.simu[sim.index - 1] + rnorm(1)
sim.index <- sim.index + 1
} # end while
if (sim.index <= max.simu) { # fill zero prices
v.simu[sim.index:max.simu] <- v.simu[sim.index - 1]
}
# create daily time series starting 2011
ts_var <- ts(data=v.simu, frequency=365)
plot(ts_var)
當我運行我的代碼時,模擬停止時,數字命中10或-10。我需要對它進行編碼,以便它碰到一個障礙編號,然後如果它碰到另一個障礙編號,模擬將停止。我需要使用while循環停止模擬,當它碰到其中一個障礙時,然後另一個
設置標誌<-c(0,0)'並檢查條件'while(!prod(flag))'可能會更「清潔」'這樣你可以任意增加每個標誌和標誌出現超出範圍的值而沒有一堆「ifs」 – 2014-10-03 11:52:46