From murdoch.duncan at gmail.com  Wed Aug 31 00:29:18 2016
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Tue, 30 Aug 2016 18:29:18 -0400
Subject: [Rd] A bug in the R Mersenne Twister (RNG) code?
In-Reply-To: <61f698e6-c432-0dfe-630b-d6d45a78dc05@gmail.com>
References: <61f698e6-c432-0dfe-630b-d6d45a78dc05@gmail.com>
Message-ID: <1955d948-06dd-1c0c-6de1-32b0805152e6@gmail.com>

I don't see evidence of a bug.  There have been several versions of the 
MT; we may be using a different version than you are.  Ours is the 
1999/10/28 version; the web page you cite uses one from 2002.

Perhaps the newer version fixes some problems, and then it would be 
worth considering a change.  But changing the default RNG definitely 
introduces problems in reproducibility, so it's not obvious that we 
would do it.

Duncan Murdoch


On 30/08/2016 5:45 PM, Mark Roberts wrote:
> Whomever,
>
> I recently sent the "bug report" below toR-core at r-project.org and have
> just been asked to instead submit it to you.
>
> Although I am basically not an R user, I have installed version 3.3.1
> and am also the author of a statistics program written in Visual Basic
> that contains a component which correctly implements the Mersenne
> Twister (MT) algorithm.  I believe that it is not possible to generate
> the correct stream of pseudorandom numbers using the MT default random
> number generator in R, and am not the first person to notice this.  Here
> is a posted 2013 entry
> (www.r-bloggers.com/reproducibility-and-randomness/) on an R website
> that asserts that the SAS computer program implementation of the MT
> algorithm produces different numbers than R does when using the same
> starting seed number.  The author of this post didn?t get anyone to
> respond to his query about the reason for this SAS vs. R discrepancy.
>
> There are two ways of initializing the original MT computer program
> (written in C) so that an identical stream of numbers can be repeatedly
> generated:  1) with a particular integer seed number, and 2) with a
> particular array of integers.   In the 'compilation and usage' section
> of this webpage (https://github.com/cslarsen/mersenne-twister) there is
> a listing of the first 200 random numbers the MT algorithm should
> produce for seed number = 1.  The inventors of the Mersenne Twister
> random number generator provided two different sets of the first 1000
> numbers produced by a correctly coded 32-bit implementation of the MT
> algorithm when initializing it with a particular array of integers at:
> www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.out.
> [There is a link to this output at:
> www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html.]
>
> My statistics program obtains exactly those 200 numbers from the first
> site mentioned in the previous paragraph and also obtains those same
> numbers from the second website (though I didn't check all 2000 values).
>    Assuming that the MT code within R uses the 32-bit MT algorithm, I
> suspect that the current version of R can't do that.  If you (i.e.,
> anyone who might knowledgeably respond to this report) is able to
> duplicate those reference test-values, then please send me the R code to
> initialize the MT code within R to successfully do that, and I apologize
> for having wasted your time. If you (collectively) can't do that, then R
> is very likely using incorrectly implemented MT code.  And if this
> latter possibility is true, it seems to me that this is something that
> should be fixed.
>
> Mark Roberts, Ph.D.
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] A bug in the R Mersenne Twister (RNG) code?
Duncan Murdoch