Pchp.Library.MersenneTwister.NextUnsigned C# (CSharp) Method

NextUnsigned() public method

Generates a random unsigned integer.
public NextUnsigned ( ) : uint
return uint
        public uint NextUnsigned()
        {
            // most significant w-r bits:
            const uint upper_mask = 0x80000000U;

            // least significant r bits:
            const uint lower_mask = 0x7fffffffU;

            uint result;

            unchecked
            {
                // generate N words at one time:
                if (mti >= N)
                {
                    int k;

                    for (k = 0; k < N - M; k++)
                    {
                        result = (mt[k] & upper_mask) | (mt[k + 1] & lower_mask);
                        mt[k] = mt[k + M] ^ (result >> 1) ^ mag01[result & 1];
                    }

                    for (; k < N - 1; k++)
                    {
                        result = (mt[k] & upper_mask) | (mt[k + 1] & lower_mask);
                        mt[k] = mt[k + (M - N)] ^ (result >> 1) ^ mag01[result & 1];
                    }

                    result = (mt[N - 1] & upper_mask) | (mt[0] & lower_mask);
                    mt[N - 1] = mt[M - 1] ^ (result >> 1) ^ mag01[result & 1];

                    mti = 0;
                }

                result = mt[mti++];

                // tempering:
                result ^= (result >> 11);
                result ^= (result << 7) & 0x9d2c5680U;
                result ^= (result << 15) & 0xefc60000U;
                result ^= (result >> 18);
            }

            return result;
        }