Description The following functions allow you to use a portable, fast and good pseudo-random number generator (PRNG). It uses the Mersenne Twister PRNG, which was originally developed by Makoto Matsumoto and Takuji Nishimura. Further information can be found at http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html.
If you just need a random number, you simply call the g_random_* functions, which will create a globally used GRand and use the according g_rand_* functions internally. Whenever you need a stream of reproducible random numbers, you better create a GRand yourself and use the g_rand_* functions directly, which will also be slightly faster. Initializing a GRand with a certain seed will produce exactly the same series of random numbers on all platforms. This can thus be used as a seed for e.g. games. The g_rand*_range functions will return high quality equally distributed random numbers, whereas for example the (g_random_int()%max) approach often doesn't yield equally distributed numbers. GLib changed the seeding algorithm for the pseudo-random number generator Mersenne Twister, as used by GRand and GRandom. This was necessary, because some seeds would yield very bad pseudo-random streams. Also the pseudo-random integers generated by g_rand*_int_range() will have a slightly better equal distribution with the new version of GLib. The original seeding and generation algorithms, as found in GLib 2.0.x, can be used instead of the new ones by setting the environment variable G_RANDOM_VERSION to the value of '2.0'. Use the GLib-2.0 algorithms only if you have sequences of numbers generated with Glib-2.0 that you need to reproduce exactly.