Hello All,

In the MersenneTwister implementation in commons, I notice the following:

    @Override
    public void setSeed(int seed) {
        // we use a long masked by 0xffffffffL as a poor man unsigned int
        long longMT = seed;
        mt[0]= (int) longMT;
        for (mti = 1; mti < N; ++mti) {
            // See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier.
            // initializer from the 2002-01-09 C version by Makoto Matsumoto
            longMT = (1812433253l * (longMT ^ (longMT >> 30)) + mti) &
0xffffffffL;
            mt[mti]= (int) longMT;
        }
    }

While probably not a big deal, shouldn't the initial element in the array mt
be 'anded' by 0xffffffffL?

mt[0]= (int) longMT & 0xffffffffL;

Thanks,

-Greg

Reply via email to