[R] .Random.seed
Sundar Dorai-Raj
sundar.dorai-raj at pdf.com
Thu Oct 16 16:45:14 CEST 2003
This is a scoping issue. I think what you want in your example is
test <- function(runs, seed) {
# this is a local copy of ".Random.seed"
.Random.seed <- seed
# need to make a global copy
assign(".Random.seed", .Random.seed, 1)
for (i in 1:runs) {
print(i)
print(runif(1,0,1))
print(.Random.seed)
}
return(.Random.seed)
}
RNGkind(kind="Marsaglia-Multicarry")
set.seed(20391)
seed1 <- .Random.seed
seed1
test(2, seed1)
test(2, seed1)
Hope this helps,
-sundar
Ann Hess wrote:
> I am writing a function for the purposes of a simulation. Due to memory
> problems, the function sometimes crashes. In order to get around this
> problem, I would like to include to be able to save the "last" seed, so I
> can pick up with the next run of the simulation after a "crash". I am
> having trouble understanding what is going on with .Random.seed!
>
> For each run of the following function, a random uniform and the current
> .Random.seed should be printed:
>
> test<-function(runs,seed){
> .Random.seed<-seed
> for (i in 1:runs) {
> print(i)
> print(runif(1,0,1))
> print(.Random.seed)}
> return(.Random.seed}
>
> Consider the following input/output:
>
>>RNGkind(kind="Marsaglia-Multicarry")
>>set.seed(20391)
>>seed1<-.Random.seed
>>seed1
>
> [1] 401 -1607331462 -462081869
>
>>test(2,seed1)
>
> [1] 1
> [1] 0.4188851
> [1] 401 -1607331462 -462081869
> [1] 2
> [1] 0.7713649
> [1] 401 -1607331462 -462081869
> [1] 401 -1607331462 -462081869
>
>>seed1
>
> [1] 401 -1607331462 -462081869
>
>>test(2,seed1)
>
> [1] 1
> [1] 0.7293294
> [1] 401 -1607331462 -462081869
> [1] 2
> [1] 0.8266798
> [1] 401 -1607331462 -462081869
> [1] 401 -1607331462 -462081869
>
>
> The output from each call of the function seems to suggest that
> .Random.seed is not changing (although different random uniforms are
> generated each time). The second call of the function doesn't match the
> first call even though the same "seed" is used.
>
> Can anyone explain what is happening here? My goal is to save the "last"
> seed so that I can use it to generate the next run of a simulation (after
> a crash).
>
> Thanks in advance!
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
More information about the R-help
mailing list