From btyner at gmail.com  Tue Feb  7 23:29:58 2017
From: btyner at gmail.com (Benjamin Tyner)
Date: Tue, 7 Feb 2017 17:29:58 -0500
Subject: [Rd] package load altering RNG state
In-Reply-To: <22681.57582.813027.427844@stat.math.ethz.ch>
References: <54995b10-e094-1f26-6a18-a52d692d6404@gmail.com>
	<2f43985c-35dd-f505-da37-22aa92ca8be8@gmail.com>
	<22681.57582.813027.427844@stat.math.ethz.ch>
Message-ID: <fb215f8d-fe66-3c94-4eb9-70ce63d44dd6@gmail.com>

Martin,

Outstanding! This is a most welcome enhancement.

Regards

Ben


On 02/07/2017 09:59 AM, 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
>
> Martin



[Rd] package load altering RNG state
Benjamin Tyner