[glib] GRand: move docs from tmpl to inline comments



commit d51b6c471ab13348077630e8f7a3a480b3d266f0
Author: Ryan Lortie <desrt desrt ca>
Date:   Sat Jan 30 01:00:50 2010 -0500

    GRand: move docs from tmpl to inline comments

 docs/reference/glib/tmpl/.gitignore          |    1 +
 docs/reference/glib/tmpl/random_numbers.sgml |  206 --------------------------
 glib/grand.c                                 |   64 ++++++++
 3 files changed, 65 insertions(+), 206 deletions(-)
---
diff --git a/docs/reference/glib/tmpl/.gitignore b/docs/reference/glib/tmpl/.gitignore
index b95a0a9..2d2122d 100644
--- a/docs/reference/glib/tmpl/.gitignore
+++ b/docs/reference/glib/tmpl/.gitignore
@@ -4,3 +4,4 @@ gurifuncs.sgml
 gvarianttype.sgml
 hash_tables.sgml
 option.sgml
+random_numbers.sgml
diff --git a/glib/grand.c b/glib/grand.c
index 8edcca3..231ed13 100644
--- a/glib/grand.c
+++ b/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()&percnt;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;
 
@@ -358,6 +408,14 @@ g_rand_set_seed_array (GRand* rand, const guint32 *seed, guint seed_length)
 }
 
 /**
+ * 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.
  *
@@ -528,6 +586,12 @@ g_rand_double_range (GRand* rand, gdouble begin, gdouble end)
 }
 
 /**
+ * g_random_boolean:
+ * @Returns: a random #gboolean.
+ *
+ * Returns a random #gboolean. This corresponds to a unbiased coin toss.
+ **/
+/**
  * g_random_int:
  *
  * Return a random #guint32 equally distributed over the range



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]