Home > Back-end >  When do I have to set a seed?
When do I have to set a seed?

Time:08-26

I think this is a very basic question

I am doing simulations, so I make functions to recreate for example a random walk, which mathematically takes this form:

enter image description here

so to simulate it I make my function:

ar_1 <- function(iter, y0, sigma_e){
  
  e <- rnorm(iter, sd = sigma_e)
  
  y <- numeric(iter)
  y[1] <- y0
  
  for(t in 2:iter){
    y[t] = y[t-1] e[t]
  }
  
  result <- data.frame(iteration  = seq(1,iter), y = y)
  
  print(plot(result$iteration, result$y, type="l"))
  
  return(result)
}

try1 <- ar_1(iter = 100, y0 = 2, sigma_e = 0.0003)

So the thing is the e vector takes random numbers.

I want to replicate the same graph and values wherever, so I know I gotta use a seed.

So my question is: does the seed goes inside the function or at the very start of the script?

Furthermore, I would want to know why.

CodePudding user response:

If you set.seed once at the top of the script, the seed will remain set until the first call to rnorm. Subsequent calls to functions that require a random seed will not use the initial seed.

So really the answer is: do you intend to call the function more than once? If so, then set the seed inside the function.

  • Related