Name
Random Numbers -- pseudo random number generator.
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 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_* function 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.
Details
struct GRand
The GRand struct is an opaque data structure. It should only be
accessed through the g_rand_* functions.
g_rand_new_with_seed ()
Creates a new random number generator initialized with seed.
g_rand_new ()
GRand* g_rand_new (void); |
Creates a new random number generator initialized with a seed taken
either from /dev/urandom (if existing) or from the current time (as
a fallback).
g_rand_free ()
void g_rand_free (GRand *rand); |
Frees the memory allocated for the GRand.
g_rand_set_seed ()
Sets the seed for the random number generator GRand to seed.
g_rand_boolean()
#define g_rand_boolean(rand) |
Return a random gboolean from rand. This corresponds to a unbiased
coin toss.
g_rand_int ()
Return the next random guint32 from rand equaly distributed over
the range [0..2^32-1].
g_rand_int_range ()
Return the next random gint32 from rand equaly distributed over
the range [begin..end-1].
g_rand_double ()
Return the next random gdouble from rand equaly distributed over
the range [0..1).
g_rand_double_range ()
Return the next random gdouble from rand equaly distributed over
the range [begin..end).
g_random_set_seed ()
void g_random_set_seed (guint32 seed); |
Sets the seed for the global random number generator, which is used
by te g_random_* functions, to seed.
g_random_boolean()
#define g_random_boolean() |
Return a random gboolean. This corresponds to a unbiased coin toss.
g_random_int ()
Return a random guint32 equaly distributed over the range
[0..2^32-1].
g_random_int_range ()
Return a random gint32 equaly distributed over the range
[begin..end-1].
g_random_double ()
Return a random gdouble equaly distributed over the range [0..1).
g_random_double_range ()
Return a random gdouble equaly distributed over the range [begin..end).