[R] Initialising Mersenne-Twister with one integer

Gad Abraham g.abraham at ms.unimelb.edu.au
Wed Sep 27 01:29:40 CEST 2006


Prof Brian Ripley wrote:
> On Mon, 25 Sep 2006, Gad Abraham wrote:
> 
>> Hi,
>>
>> It seems to me that the Mersenne-Twister PRNG can be initialised using
>> one integer instead of 624 integers, since inside RNG.c code there's a
>> function defined as MT_sgenrand(Int32).
>>
>> How do I actually set this seed within R?
> 
> set.seed(), on the help page for ?.Random.seed.
> 
>> I've tried:
>>
>> > .Random.seed <- c(3, 1)
>> > runif(1)
>> Error in runif(1) : .Random.seed has wrong length
> 
>> From the help page
> 
>      '.Random.seed' is an integer vector, containing the random number
>      generator (RNG) *state* for random number generation in R.  It can
>      be saved and restored, but should not be altered by the user.

Ah yes, now I see that .Random.seed is the state, not the actual seed.

> 
>> In addition, is '3' actually the correct rng.kind for the 
>> Mersenne-Twister?
>>
>> I'm using R version 2.2.1, 2005-12-20 on Ubuntu Dapper Linux 686.
> 
> Not current, but I suspect the help page is the same in that version.
> 

Thanks for clarifying that, now I can ask my next question:

I would like to set the same seed in R and in another implementation of 
the Mersenne-Twister (MersenneTwister.java by Sean Luke, at 
http://cs.gmu.edu/~sean/research/mersenne/MersenneTwister.java), in 
order to get the same set of random deviates.

In Java:
    MersenneTwister mt = new MersenneTwister(1); // set seed
    System.out.println("result = " + mt.nextDouble());
    // result is 0.4170220046815992

In R:

    > set.seed(1, kind = "Mersenne-Twister")
    > runif(1)
    [1] 0.2655087

Why are the random deviates different?



Thanks,
Gad


-- 
Gad Abraham
Department of Mathematics and Statistics
University of Melbourne
Parkville 3010, Victoria, Australia
email: g.abraham at ms.unimelb.edu.au
web: http://www.ms.unimelb.edu.au/~gabraham



More information about the R-help mailing list