[R] same random numbers in different sessions

Duncan Murdoch murdoch.duncan at gmail.com
Sun Oct 10 12:03:17 CEST 2010


On 10/10/2010 4:30 AM, Liviu Andronic wrote:
> Hello
> 
> On Sun, Oct 10, 2010 at 1:16 AM, jim holtman <jholtman at gmail.com> wrote:
>> You need to set the set.seed yourself.  There are some simulation
>> where I do want the same numbers generated and can use the set.seed to
>> set it to a know value.  If you want something random each time, then
>> use the time of day in the call to set.seed.
>>
> I try to do this, but I get funny results. I put
> try(rm(.Random.seed))
> set.seed(Sys.time())
> 
> in
> /usr/lib/R/etc/Rprofile.site
> 
> but I get the following error
> Error in rm(.Random.seed) : cannot remove variables from base namespace
> [Previously saved workspace restored]
> 
> and it is as if the set.seed() call didn't work, since I get the same
> random values.
>> rnorm(1:10)
>  [1] -1.3618103  0.4241701  1.0720076  0.2208145 -0.5375314 -0.4846588
>  [7]  0.7576768  0.6527407 -0.6868786  0.8718527
> 
> If I do
>> set.seed(Sys.time())
>> rnorm(1:10)
>  [1] -0.6165650  0.6305187 -0.9316815  0.6034638 -0.8593514 -1.0243644
>  [7] -0.1050344  0.4408562 -0.3466161  0.4058430
> 
> manually, within the session, the seed seems to be changed as
> requested. Am I doing something wrong?

The Rprofile.site is being executed before the saved workspace is 
restored.  See ?Startup for the sequence of events on startup. You could 
put the rm() in .First() in the saved workspace and it would do what you 
want.

But more generally, I would say the thing you are doing wrong is saving 
.RData sometimes, but not consistently saving it.  In my opinion it's 
safest to never save it; then you won't recover unexpected things from 
your history.  But it's also safe to always save it.  Then you'll get a 
new copy of .Random.seed saved each time.

I think the q() function makes it a little too easy to do what you did: 
  if you intend to never save it, but answer "Yes" just once, you get 
into your situation.  I don't know what the alternative should be.

One possibility would be for R to record whether the workspace was 
restored at the start of the session, and use that to determine the 
default when ending it.  But that would mess up people who are trying to 
reproduce things from identical conditions, e.g. when tracking down a bug.

Duncan Murdoch



More information about the R-help mailing list