2015-10-10 51 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]