The code mt19937.c internally generates unsigned long (32 bits) integers which (seems to) uniformly distribute between 0 to 2^32-1, then transform them into real [0,1] numbers by dividing 2^32-1.
genrand() returns a real number (double, 32-bit precision) for each call.

To initialize, one needs to call the function sgenrand(seed) with an unsigned long integer seed. Seed should not be ZERO. Different seeds give different sequences.

To generate unsigned long integers, change the type of the return value of genrand() into unsigned long, and change the "return()" sentence in this function into "return(y)".

This code is a free ware under the terms of GNU Library General Public License.