mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-01 15:03:39 +02:00
GRand: move docs from tmpl to inline comments
This commit is contained in:
64
glib/grand.c
64
glib/grand.c
@@ -55,6 +55,56 @@
|
||||
#include <process.h> /* For getpid() */
|
||||
#endif
|
||||
|
||||
/**
|
||||
* SECTION: random_numbers
|
||||
* @title: Random Numbers
|
||||
* @short_description: 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
|
||||
* <ulink url="http://www.math.keio.ac.jp/~matumoto/emt.html">
|
||||
* www.math.keio.ac.jp/~matumoto/emt.html</ulink>.
|
||||
*
|
||||
* If you just need a random number, you simply call the
|
||||
* <function>g_random_*</function> functions, which will create a
|
||||
* globally used #GRand and use the according
|
||||
* <function>g_rand_*</function> functions internally. Whenever you
|
||||
* need a stream of reproducible random numbers, you better create a
|
||||
* #GRand yourself and use the <function>g_rand_*</function> 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 <function>g_rand*_range</function> functions will return high
|
||||
* quality equally distributed random numbers, whereas for example the
|
||||
* <literal>(g_random_int()%max)</literal> approach often
|
||||
* doesn't yield equally distributed numbers.
|
||||
*
|
||||
* GLib changed the seeding algorithm for the pseudo-random number
|
||||
* generator Mersenne Twister, as used by
|
||||
* <structname>GRand</structname> and <structname>GRandom</structname>.
|
||||
* This was necessary, because some seeds would yield very bad
|
||||
* pseudo-random streams. Also the pseudo-random integers generated by
|
||||
* <function>g_rand*_int_range()</function> 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 <envar>G_RANDOM_VERSION</envar> 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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* GRand:
|
||||
*
|
||||
* The #GRand struct is an opaque data structure. It should only be
|
||||
* accessed through the <function>g_rand_*</function> functions.
|
||||
**/
|
||||
|
||||
G_LOCK_DEFINE_STATIC (global_random);
|
||||
static GRand* global_random = NULL;
|
||||
|
||||
@@ -357,6 +407,14 @@ g_rand_set_seed_array (GRand* rand, const guint32 *seed, guint seed_length)
|
||||
rand->mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */
|
||||
}
|
||||
|
||||
/**
|
||||
* g_rand_boolean:
|
||||
* @rand_: a #GRand.
|
||||
* @Returns: a random #gboolean.
|
||||
*
|
||||
* Returns a random #gboolean from @rand_. This corresponds to a
|
||||
* unbiased coin toss.
|
||||
**/
|
||||
/**
|
||||
* g_rand_int:
|
||||
* @rand_: a #GRand.
|
||||
@@ -527,6 +585,12 @@ g_rand_double_range (GRand* rand, gdouble begin, gdouble end)
|
||||
return g_rand_double (rand) * (end - begin) + begin;
|
||||
}
|
||||
|
||||
/**
|
||||
* g_random_boolean:
|
||||
* @Returns: a random #gboolean.
|
||||
*
|
||||
* Returns a random #gboolean. This corresponds to a unbiased coin toss.
|
||||
**/
|
||||
/**
|
||||
* g_random_int:
|
||||
*
|
||||
|
Reference in New Issue
Block a user