[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