2015-10-10 86 views
-3

當我模擬布朗運動,我需要10至20種子R.我的代碼是下面,但我認爲這只是一個固定的種子,如何將不同的種子下創建,謝謝種功能

u <- 0.05 
sigma <- 0.2 
t <- 1 
steps <- 252 
S0 <- 100 
dt <- u/steps 
set.seed(10:20) 
epsilon_t_vec <- rnorm(steps) 
epsilon_t_vec <- append(0, epsilon_t_vec) 
dwt_vec <- epsilon_t_vec * sqrt(dt) 
St_vec <- c() 
St_vec[1] <- S0 
for(i in 1:steps) { 
    dwt <- dwt_vec[i+1] 
    St_vec[i+1] <- St_vec[i] + u * St_vec[i] * dt + sigma * St_vec[i] * dwt 
} 
St_vec 
+0

如果你想用不同的種子多次運行你的代碼,你可能需要創建一個循環。 – josliber

回答

0

你可以做這樣的事情。每次在第二個循環中更改種子的位置,並將輸出附加到具有種子長度的列表中。

u <- 0.05 
sigma <- 0.2 
t <- 1 
steps <- 252 
S0 <- 100 
dt <- u/steps 

seeds <- 10:20 
St_vec <- list() 


for(s in 1:length(seeds)) { 
set.seed(seeds[s]) 

epsilon_t_vec <- rnorm(steps) 
epsilon_t_vec <- append(0, epsilon_t_vec) 

dwt_vec <- epsilon_t_vec * sqrt(dt) 
St_vec[[s]] <- c(S0) 



for(i in 1:steps) { 
    dwt <- dwt_vec[i+1] 
    St_vec[[s]][i+1] <- St_vec[[s]][i] + u * St_vec[[s]][i] * dt + sigma * St_vec[[s]][i] * dwt 
} 
} 
+0

哇!非常感謝你! –

+0

如果你喜歡我的回答,我會很高興,如果你標記/勾選它被接受。 – maRtin

+0

,我可以再問你一個問題嗎?我寫了這個編碼:AR < - function(b1,n = 1000) { seed <-10 x <-runif(n,-0.5,0.5)#white noise y <-10 y [1] < - 10 + x [1] y [2]