Random Numbers
pseudo-random number generator.
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 www.math.keio.ac.jp/~matumoto/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.
The #GRand struct is an opaque data structure. It should only be
accessed through the g_rand_* functions.
@seed:
@Returns:
@seed:
@seed_length:
@Returns:
@Returns:
@rand_:
@Returns:
@rand_:
@rand_:
@seed:
@rand_:
@seed:
@seed_length:
Returns a random #gboolean from @rand_. This corresponds to a unbiased
coin toss.
@rand_: a #GRand.
@Returns: a random #gboolean.
@rand_:
@Returns:
@rand_:
@begin:
@end:
@Returns:
@rand_:
@Returns:
@rand_:
@begin:
@end:
@Returns:
@seed:
Returns a random #gboolean. This corresponds to a unbiased coin toss.
@Returns: a random #gboolean.
@Returns:
@begin:
@end:
@Returns:
@Returns:
@begin:
@end:
@Returns: