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_* 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.
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) |
Returns a random gboolean from rand. This corresponds to a unbiased
coin toss.
g_rand_int ()
Returns the next random guint32 from rand equally distributed over
the range [0..2^32-1].
g_rand_int_range ()
Returns the next random gint32 from rand equally distributed over
the range [begin..end-1].
g_rand_double ()
Returns the next random gdouble from rand equally distributed over
the range [0..1).
g_rand_double_range ()
Returns the next random gdouble from rand equally 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 the g_random_* functions, to seed.
g_random_boolean()
#define g_random_boolean() |
Returns a random gboolean. This corresponds to a unbiased coin toss.
g_random_int ()
Return a random guint32 equally distributed over the range
[0..2^32-1].
g_random_int_range ()
Returns a random gint32 equally distributed over the range
[begin..end-1].
g_random_double ()
Returns a random gdouble equally distributed over the range [0..1).
g_random_double_range ()
Returns a random gdouble equally distributed over the range [begin..end).