blob: 685bdc8c3a81e68e355abd7611c98445781fc829 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Random Numbers</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="GLib Reference Manual">
<link rel="up" href="glib-utilities.html" title="GLib Utilities">
<link rel="prev" href="glib-Date-and-Time-Functions.html" title="Date and Time Functions">
<link rel="next" href="glib-Hook-Functions.html" title="Hook Functions">
<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="glib-Date-and-Time-Functions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="glib-utilities.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GLib Reference Manual</th>
<td><a accesskey="n" href="glib-Hook-Functions.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#glib-Random-Numbers.synopsis" class="shortcut">Top</a>
 | 
<a href="#glib-Random-Numbers.description" class="shortcut">Description</a>
</td></tr>
</table>
<div class="refentry" title="Random Numbers">
<a name="glib-Random-Numbers"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="glib-Random-Numbers.top_of_page"></a>Random Numbers</span></h2>
<p>Random Numbers — pseudo-random number generator</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv" title="Synopsis">
<a name="glib-Random-Numbers.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;glib.h&gt;
<a class="link" href="glib-Random-Numbers.html#GRand" title="GRand">GRand</a>;
<a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* <a class="link" href="glib-Random-Numbers.html#g-rand-new-with-seed" title="g_rand_new_with_seed ()">g_rand_new_with_seed</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> seed</code></em>);
<a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* <a class="link" href="glib-Random-Numbers.html#g-rand-new-with-seed-array" title="g_rand_new_with_seed_array ()">g_rand_new_with_seed_array</a> (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> *seed</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> seed_length</code></em>);
<a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* <a class="link" href="glib-Random-Numbers.html#g-rand-new" title="g_rand_new ()">g_rand_new</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
<a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* <a class="link" href="glib-Random-Numbers.html#g-rand-copy" title="g_rand_copy ()">g_rand_copy</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-Random-Numbers.html#g-rand-free" title="g_rand_free ()">g_rand_free</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-Random-Numbers.html#g-rand-set-seed" title="g_rand_set_seed ()">g_rand_set_seed</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> seed</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-Random-Numbers.html#g-rand-set-seed-array" title="g_rand_set_seed_array ()">g_rand_set_seed_array</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> *seed</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> seed_length</code></em>);
#define <a class="link" href="glib-Random-Numbers.html#g-rand-boolean" title="g_rand_boolean()">g_rand_boolean</a> (rand_)
<a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a> <a class="link" href="glib-Random-Numbers.html#g-rand-int" title="g_rand_int ()">g_rand_int</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);
<a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a> <a class="link" href="glib-Random-Numbers.html#g-rand-int-range" title="g_rand_int_range ()">g_rand_int_range</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> end</code></em>);
<a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="glib-Random-Numbers.html#g-rand-double" title="g_rand_double ()">g_rand_double</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);
<a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="glib-Random-Numbers.html#g-rand-double-range" title="g_rand_double_range ()">g_rand_double_range</a> (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> end</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-Random-Numbers.html#g-random-set-seed" title="g_random_set_seed ()">g_random_set_seed</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> seed</code></em>);
#define <a class="link" href="glib-Random-Numbers.html#g-random-boolean" title="g_random_boolean">g_random_boolean</a>
<a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a> <a class="link" href="glib-Random-Numbers.html#g-random-int" title="g_random_int ()">g_random_int</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
<a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a> <a class="link" href="glib-Random-Numbers.html#g-random-int-range" title="g_random_int_range ()">g_random_int_range</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> end</code></em>);
<a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="glib-Random-Numbers.html#g-random-double" title="g_random_double ()">g_random_double</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
<a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="glib-Random-Numbers.html#g-random-double-range" title="g_random_double_range ()">g_random_double_range</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> end</code></em>);
</pre>
</div>
<div class="refsect1" title="Description">
<a name="glib-Random-Numbers.description"></a><h2>Description</h2>
<p>
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
<a class="ulink" href="http://www.math.keio.ac.jp/~matumoto/emt.html" target="_top">
www.math.keio.ac.jp/~matumoto/emt.html</a>.
</p>
<p>
If you just need a random number, you simply call the
<code class="function">g_random_*</code> functions, which will create a
globally used <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> and use the according
<code class="function">g_rand_*</code> functions internally. Whenever you
need a stream of reproducible random numbers, you better create a
<a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> yourself and use the <code class="function">g_rand_*</code> functions
directly, which will also be slightly faster. Initializing a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>
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.
</p>
<p>
The <code class="function">g_rand*_range</code> functions will return high
quality equally distributed random numbers, whereas for example the
<code class="literal">(<a class="link" href="glib-Random-Numbers.html#g-random-int" title="g_random_int ()"><code class="function">g_random_int()</code></a>%max)</code> approach often
doesn't yield equally distributed numbers.
</p>
<p>
GLib changed the seeding algorithm for the pseudo-random number
generator Mersenne Twister, as used by
<span class="structname">GRand</span> and <span class="structname">GRandom</span>.
This was necessary, because some seeds would yield very bad
pseudo-random streams. Also the pseudo-random integers generated by
<code class="function">g_rand*_int_range()</code> will have a slightly better
equal distribution with the new version of GLib.
</p>
<p>
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 <code class="envar">G_RANDOM_VERSION</code> 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.
</p>
</div>
<div class="refsect1" title="Details">
<a name="glib-Random-Numbers.details"></a><h2>Details</h2>
<div class="refsect2" title="GRand">
<a name="GRand"></a><h3>GRand</h3>
<pre class="programlisting">typedef struct _GRand GRand;</pre>
<p>
The <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> struct is an opaque data structure. It should only be
accessed through the <code class="function">g_rand_*</code> functions.
</p>
</div>
<hr>
<div class="refsect2" title="g_rand_new_with_seed ()">
<a name="g-rand-new-with-seed"></a><h3>g_rand_new_with_seed ()</h3>
<pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* g_rand_new_with_seed (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> seed</code></em>);</pre>
<p>
Creates a new random number generator initialized with <em class="parameter"><code>seed</code></em>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>seed</code></em> :</span></p></td>
<td>a value to initialize the random number generator.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_new_with_seed_array ()">
<a name="g-rand-new-with-seed-array"></a><h3>g_rand_new_with_seed_array ()</h3>
<pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* g_rand_new_with_seed_array (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> *seed</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> seed_length</code></em>);</pre>
<p>
Creates a new random number generator initialized with <em class="parameter"><code>seed</code></em>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>seed</code></em> :</span></p></td>
<td>an array of seeds to initialize the random number generator.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>seed_length</code></em> :</span></p></td>
<td>an array of seeds to initialize the random number generator.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.4</p>
</div>
<hr>
<div class="refsect2" title="g_rand_new ()">
<a name="g-rand-new"></a><h3>g_rand_new ()</h3>
<pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* g_rand_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>
Creates a new random number generator initialized with a seed taken
either from <code class="filename">/dev/urandom</code> (if existing) or from
the current time (as a fallback).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_copy ()">
<a name="g-rand-copy"></a><h3>g_rand_copy ()</h3>
<pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a>* g_rand_copy (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);</pre>
<p>
Copies a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> into a new one with the same exact state as before.
This way you can take a snapshot of the random number generator for
replaying later.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.4</p>
</div>
<hr>
<div class="refsect2" title="g_rand_free ()">
<a name="g-rand-free"></a><h3>g_rand_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_rand_free (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);</pre>
<p>
Frees the memory allocated for the <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_set_seed ()">
<a name="g-rand-set-seed"></a><h3>g_rand_set_seed ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_rand_set_seed (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> seed</code></em>);</pre>
<p>
Sets the seed for the random number generator <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> to <em class="parameter"><code>seed</code></em>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>seed</code></em> :</span></p></td>
<td>a value to reinitialize the random number generator.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_set_seed_array ()">
<a name="g-rand-set-seed-array"></a><h3>g_rand_set_seed_array ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_rand_set_seed_array (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> *seed</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> seed_length</code></em>);</pre>
<p>
Initializes the random number generator by an array of
longs. Array can be of arbitrary size, though only the
first 624 values are taken. This function is useful
if you have many low entropy seeds, or if you require more then
32bits of actual entropy for your application.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>seed</code></em> :</span></p></td>
<td>array to initialize with
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>seed_length</code></em> :</span></p></td>
<td>length of array
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.4</p>
</div>
<hr>
<div class="refsect2" title="g_rand_boolean()">
<a name="g-rand-boolean"></a><h3>g_rand_boolean()</h3>
<pre class="programlisting">#define g_rand_boolean(rand_)</pre>
<p>
Returns a random <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> from <em class="parameter"><code>rand_</code></em>. This corresponds to a
unbiased coin toss.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a random <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_int ()">
<a name="g-rand-int"></a><h3>g_rand_int ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a> g_rand_int (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);</pre>
<p>
Returns the next random <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> from <em class="parameter"><code>rand_</code></em> equally distributed over
the range [0..2^32-1].
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_int_range ()">
<a name="g-rand-int-range"></a><h3>g_rand_int_range ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a> g_rand_int_range (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> end</code></em>);</pre>
<p>
Returns the next random <a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> from <em class="parameter"><code>rand_</code></em> equally distributed over
the range [<em class="parameter"><code>begin</code></em>..<em class="parameter"><code>end</code></em>-1].
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>begin</code></em> :</span></p></td>
<td>lower closed bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>end</code></em> :</span></p></td>
<td>upper open bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_double ()">
<a name="g-rand-double"></a><h3>g_rand_double ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> g_rand_double (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>);</pre>
<p>
Returns the next random <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> from <em class="parameter"><code>rand_</code></em> equally distributed over
the range [0..1).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_rand_double_range ()">
<a name="g-rand-double-range"></a><h3>g_rand_double_range ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> g_rand_double_range (<em class="parameter"><code><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> *rand_</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> end</code></em>);</pre>
<p>
Returns the next random <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> from <em class="parameter"><code>rand_</code></em> equally distributed over
the range [<em class="parameter"><code>begin</code></em>..<em class="parameter"><code>end</code></em>).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>rand_</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>begin</code></em> :</span></p></td>
<td>lower closed bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>end</code></em> :</span></p></td>
<td>upper open bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_random_set_seed ()">
<a name="g-random-set-seed"></a><h3>g_random_set_seed ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_random_set_seed (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> seed</code></em>);</pre>
<p>
Sets the seed for the global random number generator, which is used
by the <code class="function">g_random_*</code> functions, to <em class="parameter"><code>seed</code></em>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>seed</code></em> :</span></p></td>
<td>a value to reinitialize the global random number generator.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_random_boolean">
<a name="g-random-boolean"></a><h3>g_random_boolean</h3>
<pre class="programlisting">#define g_random_boolean()</pre>
<p>
Returns a random <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a>. This corresponds to a unbiased coin toss.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a random <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a>.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_random_int ()">
<a name="g-random-int"></a><h3>g_random_int ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a> g_random_int (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>
Return a random <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="type">guint32</span></a> equally distributed over the range
[0..2^32-1].
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_random_int_range ()">
<a name="g-random-int-range"></a><h3>g_random_int_range ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a> g_random_int_range (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> end</code></em>);</pre>
<p>
Returns a random <a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> equally distributed over the range
[<em class="parameter"><code>begin</code></em>..<em class="parameter"><code>end</code></em>-1].
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>begin</code></em> :</span></p></td>
<td>lower closed bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>end</code></em> :</span></p></td>
<td>upper open bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_random_double ()">
<a name="g-random-double"></a><h3>g_random_double ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> g_random_double (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>
Returns a random <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> equally distributed over the range [0..1).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_random_double_range ()">
<a name="g-random-double-range"></a><h3>g_random_double_range ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a> g_random_double_range (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> begin</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> end</code></em>);</pre>
<p>
Returns a random <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> equally distributed over the range [<em class="parameter"><code>begin</code></em>..<em class="parameter"><code>end</code></em>).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>begin</code></em> :</span></p></td>
<td>lower closed bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>end</code></em> :</span></p></td>
<td>upper open bound of the interval.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A random number.
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.14</div>
</body>
</html>