code: synchronized public void setSeed(final long seed)
          {
          // Due to a bug in java.util.Random clear up to 1.2, we're
          // doing our own Gaussian variable.
          __haveNextNextGaussian = false;
  
          mt = new int[N];
          
          mag01 = new int[2];
          mag01[0] = 0x0;
          mag01[1] = MATRIX_A;
  
          mt[0]= (int)(seed & 0xffffffff);
          for (mti=1; mti<N; mti++) 
              {
              mt[mti] = 
                  (1812433253 * (mt[mti-1] ^ (mt[mti-1] >>> 30)) + mti); 
              /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
              /* In the previous versions, MSBs of the seed affect   */
              /* only MSBs of the array mt[].                        */
              /* 2002/01/09 modified by Makoto Matsumoto             */
              mt[mti] &= 0xffffffff;
              /* for >32 bit machines */
              }
          }
docs: Initialize the pseudo random number generator.  Don't
  pass in a long that's bigger than an int (Mersenne Twister
  only uses the first 32 bits for its seed).
  @param seed