title: Which Mersenne Twister does C++11 provide?
body: <p>I'm having trouble determining which variant of Mersenne Twister C++11 provides. Looking at Matsumoto and Nishimura ACM paper at <a href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/mt.pdf" rel="noreferrer">Mersenne twister: A 623 Dimensionally Equidistributed Uniform Pseudorandom Number Generator</a>, the authors provide the algorithm, an implementation of the algorithm, and call it <strong><em><code>MT19937</code></em></strong>.</p>
  
  <p>However, when I test C++11's same-named generator with the small program below, I cannot reproduce the stream created by Matsumoto and Nishimura's MT19937. The streams differ from the very first 32-bit word produced.</p>
  
  <p>Which Mersenne Twister does C++11 provide?</p>
  
  <hr>
  
  <p>The program below was run on Fedora 22 using GCC, <code>-std=c++11</code> and GNU's <code>stdlibc++</code>.</p>
  
  <pre><code>std::mt19937 prng(102013);
  for (unsigned int i = 0; i &lt;= 625; i++)
  {
      cout &lt;&lt; std::hex &lt;&lt; prng();
  
      if(i+1 != 625)
          cout &lt;&lt; ",";
  
      if(i &amp;&amp; i%8 == 0)
          cout &lt;&lt; endl;
  }
  </code></pre>