[Rd] package load altering RNG state

Henric Winell nilsson.henric at gmail.com
Tue Feb 7 16:31:05 CET 2017


On 2017-02-07 15:59, Martin Maechler wrote:

>>>>>> Henric Winell <nilsson.henric at gmail.com>
>>>>>>      on Tue, 7 Feb 2017 13:37:42 +0100 writes:
> 
>      > Hi, On 2017-02-07 13:12, Benjamin Tyner wrote:
> 
>      >> Hello
>      >>
>      >> When loading a package, I'm wondering if it's frowned
>      >> upon for the package to alter the state of the random
>      >> number generator? I guess not, since the parallel package
>      >> does it?
> 
>      > Surprisingly it is not frowned upon, but it *is* a
>      > nuisance.  I brought it up a couple of years ago
> 
>      > http://r.789695.n4.nabble.com/parallel-package-changes-Random-seed-td4686321.html
> 
>      > along with a patch, but was told off...
> 
>      >>
>      >> > set.seed(6860) > old.seed <- .GlobalEnv$.Random.seed >
>      >> library(parallel) > new.seed <- .GlobalEnv$.Random.seed >
>      >> identical(old.seed, new.seed) [1] FALSE
>      >>
>      >> I ask because, I found myself writing a custom wrapper
>      >> around library() to restore the original RNG state, in
>      >> order to increase reproducibility.  But now wondering if
>      >> others would welcome such a feature to be added to base
>      >> R? Either something very general like
>      >>
>      >> preserveRNGstate(library(parallel))
>      >>
>      >> or perhaps an specific enhancement to library itself?
> 
>      > I would very much welcome a change, but in the light of
>      > things it doesn't seem likely.
> 
>      > Henric Winell
> 
> Sometimes things change ... and not always for the worse.  I've
> found a version of your original patch idea which is very
> efficient nice (in my eyes) and still leaves
> 	system.time(loadNamespace("parallel"))
> to round to 0, i.e. needing less than 1 ms.
> 
>     --> in R-devel svn rev 72136

Many thanks for this, Martin!

Henric


> 
> Martin
>



More information about the R-devel mailing list