Imported Upstream version 2.50.2
[platform/upstream/glib.git] / docs / reference / glib / html / glib-Random-Numbers.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>Random Numbers: GLib Reference Manual</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="index.html" title="GLib Reference Manual">
8 <link rel="up" href="glib-utilities.html" title="GLib Utilities">
9 <link rel="prev" href="glib-GDateTime.html" title="GDateTime">
10 <link rel="next" href="glib-Hook-Functions.html" title="Hook Functions">
11 <meta name="generator" content="GTK-Doc V1.25.1 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts">
17 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
18                   <a href="#glib-Random-Numbers.description" class="shortcut">Description</a></span>
19 </td>
20 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
21 <td><a accesskey="u" href="glib-utilities.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
22 <td><a accesskey="p" href="glib-GDateTime.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
23 <td><a accesskey="n" href="glib-Hook-Functions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
24 </tr></table>
25 <div class="refentry">
26 <a name="glib-Random-Numbers"></a><div class="titlepage"></div>
27 <div class="refnamediv"><table width="100%"><tr>
28 <td valign="top">
29 <h2><span class="refentrytitle"><a name="glib-Random-Numbers.top_of_page"></a>Random Numbers</span></h2>
30 <p>Random Numbers — pseudo-random number generator</p>
31 </td>
32 <td class="gallery_image" valign="top" align="right"></td>
33 </tr></table></div>
34 <div class="refsect1">
35 <a name="glib-Random-Numbers.functions"></a><h2>Functions</h2>
36 <div class="informaltable"><table class="informaltable" width="100%" border="0">
37 <colgroup>
38 <col width="150px" class="functions_return">
39 <col class="functions_name">
40 </colgroup>
41 <tbody>
42 <tr>
43 <td class="function_type">
44 <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
45 </td>
46 <td class="function_name">
47 <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> <span class="c_punctuation">()</span>
48 </td>
49 </tr>
50 <tr>
51 <td class="function_type">
52 <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
53 </td>
54 <td class="function_name">
55 <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> <span class="c_punctuation">()</span>
56 </td>
57 </tr>
58 <tr>
59 <td class="function_type">
60 <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
61 </td>
62 <td class="function_name">
63 <a class="link" href="glib-Random-Numbers.html#g-rand-new" title="g_rand_new ()">g_rand_new</a> <span class="c_punctuation">()</span>
64 </td>
65 </tr>
66 <tr>
67 <td class="function_type">
68 <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
69 </td>
70 <td class="function_name">
71 <a class="link" href="glib-Random-Numbers.html#g-rand-copy" title="g_rand_copy ()">g_rand_copy</a> <span class="c_punctuation">()</span>
72 </td>
73 </tr>
74 <tr>
75 <td class="function_type">
76 <span class="returnvalue">void</span>
77 </td>
78 <td class="function_name">
79 <a class="link" href="glib-Random-Numbers.html#g-rand-free" title="g_rand_free ()">g_rand_free</a> <span class="c_punctuation">()</span>
80 </td>
81 </tr>
82 <tr>
83 <td class="function_type">
84 <span class="returnvalue">void</span>
85 </td>
86 <td class="function_name">
87 <a class="link" href="glib-Random-Numbers.html#g-rand-set-seed" title="g_rand_set_seed ()">g_rand_set_seed</a> <span class="c_punctuation">()</span>
88 </td>
89 </tr>
90 <tr>
91 <td class="function_type">
92 <span class="returnvalue">void</span>
93 </td>
94 <td class="function_name">
95 <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> <span class="c_punctuation">()</span>
96 </td>
97 </tr>
98 <tr>
99 <td class="define_keyword">#define</td>
100 <td class="function_name">
101 <a class="link" href="glib-Random-Numbers.html#g-rand-boolean" title="g_rand_boolean()">g_rand_boolean</a><span class="c_punctuation">()</span>
102 </td>
103 </tr>
104 <tr>
105 <td class="function_type">
106 <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a>
107 </td>
108 <td class="function_name">
109 <a class="link" href="glib-Random-Numbers.html#g-rand-int" title="g_rand_int ()">g_rand_int</a> <span class="c_punctuation">()</span>
110 </td>
111 </tr>
112 <tr>
113 <td class="function_type">
114 <a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a>
115 </td>
116 <td class="function_name">
117 <a class="link" href="glib-Random-Numbers.html#g-rand-int-range" title="g_rand_int_range ()">g_rand_int_range</a> <span class="c_punctuation">()</span>
118 </td>
119 </tr>
120 <tr>
121 <td class="function_type">
122 <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
123 </td>
124 <td class="function_name">
125 <a class="link" href="glib-Random-Numbers.html#g-rand-double" title="g_rand_double ()">g_rand_double</a> <span class="c_punctuation">()</span>
126 </td>
127 </tr>
128 <tr>
129 <td class="function_type">
130 <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
131 </td>
132 <td class="function_name">
133 <a class="link" href="glib-Random-Numbers.html#g-rand-double-range" title="g_rand_double_range ()">g_rand_double_range</a> <span class="c_punctuation">()</span>
134 </td>
135 </tr>
136 <tr>
137 <td class="function_type">
138 <span class="returnvalue">void</span>
139 </td>
140 <td class="function_name">
141 <a class="link" href="glib-Random-Numbers.html#g-random-set-seed" title="g_random_set_seed ()">g_random_set_seed</a> <span class="c_punctuation">()</span>
142 </td>
143 </tr>
144 <tr>
145 <td class="define_keyword">#define</td>
146 <td class="function_name"><a class="link" href="glib-Random-Numbers.html#g-random-boolean" title="g_random_boolean">g_random_boolean</a></td>
147 </tr>
148 <tr>
149 <td class="function_type">
150 <a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a>
151 </td>
152 <td class="function_name">
153 <a class="link" href="glib-Random-Numbers.html#g-random-int" title="g_random_int ()">g_random_int</a> <span class="c_punctuation">()</span>
154 </td>
155 </tr>
156 <tr>
157 <td class="function_type">
158 <a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a>
159 </td>
160 <td class="function_name">
161 <a class="link" href="glib-Random-Numbers.html#g-random-int-range" title="g_random_int_range ()">g_random_int_range</a> <span class="c_punctuation">()</span>
162 </td>
163 </tr>
164 <tr>
165 <td class="function_type">
166 <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
167 </td>
168 <td class="function_name">
169 <a class="link" href="glib-Random-Numbers.html#g-random-double" title="g_random_double ()">g_random_double</a> <span class="c_punctuation">()</span>
170 </td>
171 </tr>
172 <tr>
173 <td class="function_type">
174 <a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
175 </td>
176 <td class="function_name">
177 <a class="link" href="glib-Random-Numbers.html#g-random-double-range" title="g_random_double_range ()">g_random_double_range</a> <span class="c_punctuation">()</span>
178 </td>
179 </tr>
180 </tbody>
181 </table></div>
182 </div>
183 <div class="refsect1">
184 <a name="glib-Random-Numbers.other"></a><h2>Types and Values</h2>
185 <div class="informaltable"><table class="informaltable" width="100%" border="0">
186 <colgroup>
187 <col width="150px" class="name">
188 <col class="description">
189 </colgroup>
190 <tbody><tr>
191 <td class="datatype_keyword"> </td>
192 <td class="function_name"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand">GRand</a></td>
193 </tr></tbody>
194 </table></div>
195 </div>
196 <div class="refsect1">
197 <a name="glib-Random-Numbers.includes"></a><h2>Includes</h2>
198 <pre class="synopsis">#include &lt;glib.h&gt;
199 </pre>
200 </div>
201 <div class="refsect1">
202 <a name="glib-Random-Numbers.description"></a><h2>Description</h2>
203 <p>The following functions allow you to use a portable, fast and good
204 pseudo-random number generator (PRNG).</p>
205 <p>Do not use this API for cryptographic purposes such as key
206 generation, nonces, salts or one-time pads.</p>
207 <p>This PRNG is suitable for non-cryptographic use such as in games
208 (shuffling a card deck, generating levels), generating data for
209 a test suite, etc. If you need random data for cryptographic
210 purposes, it is recommended to use platform-specific APIs such
211 as <code class="literal">/dev/random</code> on UNIX, or <code class="function">CryptGenRandom()</code> on Windows.</p>
212 <p>GRand uses the Mersenne Twister PRNG, which was originally
213 developed by Makoto Matsumoto and Takuji Nishimura. Further
214 information can be found at
215 <a class="ulink" href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html" target="_top">this page</a>.</p>
216 <p>If you just need a random number, you simply call the g_random_*
217 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
218 according g_rand_* functions internally. Whenever you need a
219 stream of reproducible random numbers, you better create a
220 <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a> yourself and use the g_rand_* functions directly, which
221 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
222 certain seed will produce exactly the same series of random
223 numbers on all platforms. This can thus be used as a seed for
224 e.g. games.</p>
225 <p>The g_rand*_range functions will return high quality equally
226 distributed random numbers, whereas for example the
227 <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
228 doesn't yield equally distributed numbers.</p>
229 <p>GLib changed the seeding algorithm for the pseudo-random number
230 generator Mersenne Twister, as used by <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a>. This was necessary,
231 because some seeds would yield very bad pseudo-random streams.
232 Also the pseudo-random integers generated by g_rand*_int_range()
233 will have a slightly better equal distribution with the new
234 version of GLib.</p>
235 <p>The original seeding and generation algorithms, as found in
236 GLib 2.0.x, can be used instead of the new ones by setting the
237 environment variable <code class="literal">G_RANDOM_VERSION</code> to the value of '2.0'.
238 Use the GLib-2.0 algorithms only if you have sequences of numbers
239 generated with Glib-2.0 that you need to reproduce exactly.</p>
240 </div>
241 <div class="refsect1">
242 <a name="glib-Random-Numbers.functions_details"></a><h2>Functions</h2>
243 <div class="refsect2">
244 <a name="g-rand-new-with-seed"></a><h3>g_rand_new_with_seed ()</h3>
245 <pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
246 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>
247 <p>Creates a new random number generator initialized with <em class="parameter"><code>seed</code></em>
248 .</p>
249 <div class="refsect3">
250 <a name="g-rand-new-with-seed.parameters"></a><h4>Parameters</h4>
251 <div class="informaltable"><table class="informaltable" width="100%" border="0">
252 <colgroup>
253 <col width="150px" class="parameters_name">
254 <col class="parameters_description">
255 <col width="200px" class="parameters_annotations">
256 </colgroup>
257 <tbody><tr>
258 <td class="parameter_name"><p>seed</p></td>
259 <td class="parameter_description"><p>a value to initialize the random number generator</p></td>
260 <td class="parameter_annotations"> </td>
261 </tr></tbody>
262 </table></div>
263 </div>
264 <div class="refsect3">
265 <a name="g-rand-new-with-seed.returns"></a><h4>Returns</h4>
266 <p> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p>
267 </div>
268 </div>
269 <hr>
270 <div class="refsect2">
271 <a name="g-rand-new-with-seed-array"></a><h3>g_rand_new_with_seed_array ()</h3>
272 <pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
273 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>,
274                             <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>
275 <p>Creates a new random number generator initialized with <em class="parameter"><code>seed</code></em>
276 .</p>
277 <div class="refsect3">
278 <a name="g-rand-new-with-seed-array.parameters"></a><h4>Parameters</h4>
279 <div class="informaltable"><table class="informaltable" width="100%" border="0">
280 <colgroup>
281 <col width="150px" class="parameters_name">
282 <col class="parameters_description">
283 <col width="200px" class="parameters_annotations">
284 </colgroup>
285 <tbody>
286 <tr>
287 <td class="parameter_name"><p>seed</p></td>
288 <td class="parameter_description"><p>an array of seeds to initialize the random number generator</p></td>
289 <td class="parameter_annotations"> </td>
290 </tr>
291 <tr>
292 <td class="parameter_name"><p>seed_length</p></td>
293 <td class="parameter_description"><p>an array of seeds to initialize the random number
294 generator</p></td>
295 <td class="parameter_annotations"> </td>
296 </tr>
297 </tbody>
298 </table></div>
299 </div>
300 <div class="refsect3">
301 <a name="g-rand-new-with-seed-array.returns"></a><h4>Returns</h4>
302 <p> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p>
303 </div>
304 <p class="since">Since: <a class="link" href="api-index-2-4.html#api-index-2.4">2.4</a></p>
305 </div>
306 <hr>
307 <div class="refsect2">
308 <a name="g-rand-new"></a><h3>g_rand_new ()</h3>
309 <pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
310 g_rand_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
311 <p>Creates a new random number generator initialized with a seed taken
312 either from <code class="literal">/dev/urandom</code> (if existing) or from the current time
313 (as a fallback).</p>
314 <p>On Windows, the seed is taken from <code class="function">rand_s()</code>.</p>
315 <div class="refsect3">
316 <a name="g-rand-new.returns"></a><h4>Returns</h4>
317 <p> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p>
318 </div>
319 </div>
320 <hr>
321 <div class="refsect2">
322 <a name="g-rand-copy"></a><h3>g_rand_copy ()</h3>
323 <pre class="programlisting"><a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="returnvalue">GRand</span></a> *
324 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>
325 <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.
326 This way you can take a snapshot of the random number generator for
327 replaying later.</p>
328 <div class="refsect3">
329 <a name="g-rand-copy.parameters"></a><h4>Parameters</h4>
330 <div class="informaltable"><table class="informaltable" width="100%" border="0">
331 <colgroup>
332 <col width="150px" class="parameters_name">
333 <col class="parameters_description">
334 <col width="200px" class="parameters_annotations">
335 </colgroup>
336 <tbody><tr>
337 <td class="parameter_name"><p>rand_</p></td>
338 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
339 <td class="parameter_annotations"> </td>
340 </tr></tbody>
341 </table></div>
342 </div>
343 <div class="refsect3">
344 <a name="g-rand-copy.returns"></a><h4>Returns</h4>
345 <p> the new <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p>
346 </div>
347 <p class="since">Since: <a class="link" href="api-index-2-4.html#api-index-2.4">2.4</a></p>
348 </div>
349 <hr>
350 <div class="refsect2">
351 <a name="g-rand-free"></a><h3>g_rand_free ()</h3>
352 <pre class="programlisting"><span class="returnvalue">void</span>
353 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>
354 <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>
355 <div class="refsect3">
356 <a name="g-rand-free.parameters"></a><h4>Parameters</h4>
357 <div class="informaltable"><table class="informaltable" width="100%" border="0">
358 <colgroup>
359 <col width="150px" class="parameters_name">
360 <col class="parameters_description">
361 <col width="200px" class="parameters_annotations">
362 </colgroup>
363 <tbody><tr>
364 <td class="parameter_name"><p>rand_</p></td>
365 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
366 <td class="parameter_annotations"> </td>
367 </tr></tbody>
368 </table></div>
369 </div>
370 </div>
371 <hr>
372 <div class="refsect2">
373 <a name="g-rand-set-seed"></a><h3>g_rand_set_seed ()</h3>
374 <pre class="programlisting"><span class="returnvalue">void</span>
375 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>,
376                  <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>
377 <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>
378 .</p>
379 <div class="refsect3">
380 <a name="g-rand-set-seed.parameters"></a><h4>Parameters</h4>
381 <div class="informaltable"><table class="informaltable" width="100%" border="0">
382 <colgroup>
383 <col width="150px" class="parameters_name">
384 <col class="parameters_description">
385 <col width="200px" class="parameters_annotations">
386 </colgroup>
387 <tbody>
388 <tr>
389 <td class="parameter_name"><p>rand_</p></td>
390 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
391 <td class="parameter_annotations"> </td>
392 </tr>
393 <tr>
394 <td class="parameter_name"><p>seed</p></td>
395 <td class="parameter_description"><p>a value to reinitialize the random number generator</p></td>
396 <td class="parameter_annotations"> </td>
397 </tr>
398 </tbody>
399 </table></div>
400 </div>
401 </div>
402 <hr>
403 <div class="refsect2">
404 <a name="g-rand-set-seed-array"></a><h3>g_rand_set_seed_array ()</h3>
405 <pre class="programlisting"><span class="returnvalue">void</span>
406 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>,
407                        <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>,
408                        <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>
409 <p>Initializes the random number generator by an array of longs.
410 Array can be of arbitrary size, though only the first 624 values
411 are taken.  This function is useful if you have many low entropy
412 seeds, or if you require more then 32 bits of actual entropy for
413 your application.</p>
414 <div class="refsect3">
415 <a name="g-rand-set-seed-array.parameters"></a><h4>Parameters</h4>
416 <div class="informaltable"><table class="informaltable" width="100%" border="0">
417 <colgroup>
418 <col width="150px" class="parameters_name">
419 <col class="parameters_description">
420 <col width="200px" class="parameters_annotations">
421 </colgroup>
422 <tbody>
423 <tr>
424 <td class="parameter_name"><p>rand_</p></td>
425 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
426 <td class="parameter_annotations"> </td>
427 </tr>
428 <tr>
429 <td class="parameter_name"><p>seed</p></td>
430 <td class="parameter_description"><p>array to initialize with</p></td>
431 <td class="parameter_annotations"> </td>
432 </tr>
433 <tr>
434 <td class="parameter_name"><p>seed_length</p></td>
435 <td class="parameter_description"><p>length of array</p></td>
436 <td class="parameter_annotations"> </td>
437 </tr>
438 </tbody>
439 </table></div>
440 </div>
441 <p class="since">Since: <a class="link" href="api-index-2-4.html#api-index-2.4">2.4</a></p>
442 </div>
443 <hr>
444 <div class="refsect2">
445 <a name="g-rand-boolean"></a><h3>g_rand_boolean()</h3>
446 <pre class="programlisting">#define             g_rand_boolean(rand_)</pre>
447 <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>
448 .
449 This corresponds to a unbiased coin toss.</p>
450 <div class="refsect3">
451 <a name="g-rand-boolean.parameters"></a><h4>Parameters</h4>
452 <div class="informaltable"><table class="informaltable" width="100%" border="0">
453 <colgroup>
454 <col width="150px" class="parameters_name">
455 <col class="parameters_description">
456 <col width="200px" class="parameters_annotations">
457 </colgroup>
458 <tbody><tr>
459 <td class="parameter_name"><p>rand_</p></td>
460 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
461 <td class="parameter_annotations"> </td>
462 </tr></tbody>
463 </table></div>
464 </div>
465 <div class="refsect3">
466 <a name="g-rand-boolean.returns"></a><h4>Returns</h4>
467 <p> a random <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a></p>
468 </div>
469 </div>
470 <hr>
471 <div class="refsect2">
472 <a name="g-rand-int"></a><h3>g_rand_int ()</h3>
473 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a>
474 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>
475 <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>
476  equally distributed over
477 the range [0..2^32-1].</p>
478 <div class="refsect3">
479 <a name="g-rand-int.parameters"></a><h4>Parameters</h4>
480 <div class="informaltable"><table class="informaltable" width="100%" border="0">
481 <colgroup>
482 <col width="150px" class="parameters_name">
483 <col class="parameters_description">
484 <col width="200px" class="parameters_annotations">
485 </colgroup>
486 <tbody><tr>
487 <td class="parameter_name"><p>rand_</p></td>
488 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
489 <td class="parameter_annotations"> </td>
490 </tr></tbody>
491 </table></div>
492 </div>
493 <div class="refsect3">
494 <a name="g-rand-int.returns"></a><h4>Returns</h4>
495 <p> a random number</p>
496 </div>
497 </div>
498 <hr>
499 <div class="refsect2">
500 <a name="g-rand-int-range"></a><h3>g_rand_int_range ()</h3>
501 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a>
502 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>,
503                   <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="type">gint32</span></a> begin</code></em>,
504                   <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>
505 <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>
506  equally distributed over
507 the range [<em class="parameter"><code>begin</code></em>
508 ..<em class="parameter"><code>end</code></em>
509 -1].</p>
510 <div class="refsect3">
511 <a name="g-rand-int-range.parameters"></a><h4>Parameters</h4>
512 <div class="informaltable"><table class="informaltable" width="100%" border="0">
513 <colgroup>
514 <col width="150px" class="parameters_name">
515 <col class="parameters_description">
516 <col width="200px" class="parameters_annotations">
517 </colgroup>
518 <tbody>
519 <tr>
520 <td class="parameter_name"><p>rand_</p></td>
521 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
522 <td class="parameter_annotations"> </td>
523 </tr>
524 <tr>
525 <td class="parameter_name"><p>begin</p></td>
526 <td class="parameter_description"><p>lower closed bound of the interval</p></td>
527 <td class="parameter_annotations"> </td>
528 </tr>
529 <tr>
530 <td class="parameter_name"><p>end</p></td>
531 <td class="parameter_description"><p>upper open bound of the interval</p></td>
532 <td class="parameter_annotations"> </td>
533 </tr>
534 </tbody>
535 </table></div>
536 </div>
537 <div class="refsect3">
538 <a name="g-rand-int-range.returns"></a><h4>Returns</h4>
539 <p> a random number</p>
540 </div>
541 </div>
542 <hr>
543 <div class="refsect2">
544 <a name="g-rand-double"></a><h3>g_rand_double ()</h3>
545 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
546 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>
547 <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>
548  equally distributed over
549 the range [0..1).</p>
550 <div class="refsect3">
551 <a name="g-rand-double.parameters"></a><h4>Parameters</h4>
552 <div class="informaltable"><table class="informaltable" width="100%" border="0">
553 <colgroup>
554 <col width="150px" class="parameters_name">
555 <col class="parameters_description">
556 <col width="200px" class="parameters_annotations">
557 </colgroup>
558 <tbody><tr>
559 <td class="parameter_name"><p>rand_</p></td>
560 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
561 <td class="parameter_annotations"> </td>
562 </tr></tbody>
563 </table></div>
564 </div>
565 <div class="refsect3">
566 <a name="g-rand-double.returns"></a><h4>Returns</h4>
567 <p> a random number</p>
568 </div>
569 </div>
570 <hr>
571 <div class="refsect2">
572 <a name="g-rand-double-range"></a><h3>g_rand_double_range ()</h3>
573 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
574 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>,
575                      <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="type">gdouble</span></a> begin</code></em>,
576                      <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>
577 <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>
578  equally distributed over
579 the range [<em class="parameter"><code>begin</code></em>
580 ..<em class="parameter"><code>end</code></em>
581 ).</p>
582 <div class="refsect3">
583 <a name="g-rand-double-range.parameters"></a><h4>Parameters</h4>
584 <div class="informaltable"><table class="informaltable" width="100%" border="0">
585 <colgroup>
586 <col width="150px" class="parameters_name">
587 <col class="parameters_description">
588 <col width="200px" class="parameters_annotations">
589 </colgroup>
590 <tbody>
591 <tr>
592 <td class="parameter_name"><p>rand_</p></td>
593 <td class="parameter_description"><p>a <a class="link" href="glib-Random-Numbers.html#GRand" title="GRand"><span class="type">GRand</span></a></p></td>
594 <td class="parameter_annotations"> </td>
595 </tr>
596 <tr>
597 <td class="parameter_name"><p>begin</p></td>
598 <td class="parameter_description"><p>lower closed bound of the interval</p></td>
599 <td class="parameter_annotations"> </td>
600 </tr>
601 <tr>
602 <td class="parameter_name"><p>end</p></td>
603 <td class="parameter_description"><p>upper open bound of the interval</p></td>
604 <td class="parameter_annotations"> </td>
605 </tr>
606 </tbody>
607 </table></div>
608 </div>
609 <div class="refsect3">
610 <a name="g-rand-double-range.returns"></a><h4>Returns</h4>
611 <p> a random number</p>
612 </div>
613 </div>
614 <hr>
615 <div class="refsect2">
616 <a name="g-random-set-seed"></a><h3>g_random_set_seed ()</h3>
617 <pre class="programlisting"><span class="returnvalue">void</span>
618 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>
619 <p>Sets the seed for the global random number generator, which is used
620 by the g_random_* functions, to <em class="parameter"><code>seed</code></em>
621 .</p>
622 <div class="refsect3">
623 <a name="g-random-set-seed.parameters"></a><h4>Parameters</h4>
624 <div class="informaltable"><table class="informaltable" width="100%" border="0">
625 <colgroup>
626 <col width="150px" class="parameters_name">
627 <col class="parameters_description">
628 <col width="200px" class="parameters_annotations">
629 </colgroup>
630 <tbody><tr>
631 <td class="parameter_name"><p>seed</p></td>
632 <td class="parameter_description"><p>a value to reinitialize the global random number generator</p></td>
633 <td class="parameter_annotations"> </td>
634 </tr></tbody>
635 </table></div>
636 </div>
637 </div>
638 <hr>
639 <div class="refsect2">
640 <a name="g-random-boolean"></a><h3>g_random_boolean</h3>
641 <pre class="programlisting">#define             g_random_boolean()</pre>
642 <p>Returns a random <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a>.
643 This corresponds to a unbiased coin toss.</p>
644 <div class="refsect3">
645 <a name="g-random-boolean.returns"></a><h4>Returns</h4>
646 <p> a random <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a></p>
647 </div>
648 </div>
649 <hr>
650 <div class="refsect2">
651 <a name="g-random-int"></a><h3>g_random_int ()</h3>
652 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint32" title="guint32"><span class="returnvalue">guint32</span></a>
653 g_random_int (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
654 <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
655 [0..2^32-1].</p>
656 <div class="refsect3">
657 <a name="g-random-int.returns"></a><h4>Returns</h4>
658 <p> a random number</p>
659 </div>
660 </div>
661 <hr>
662 <div class="refsect2">
663 <a name="g-random-int-range"></a><h3>g_random_int_range ()</h3>
664 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gint32" title="gint32"><span class="returnvalue">gint32</span></a>
665 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>,
666                     <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>
667 <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
668 [<em class="parameter"><code>begin</code></em>
669 ..<em class="parameter"><code>end</code></em>
670 -1].</p>
671 <div class="refsect3">
672 <a name="g-random-int-range.parameters"></a><h4>Parameters</h4>
673 <div class="informaltable"><table class="informaltable" width="100%" border="0">
674 <colgroup>
675 <col width="150px" class="parameters_name">
676 <col class="parameters_description">
677 <col width="200px" class="parameters_annotations">
678 </colgroup>
679 <tbody>
680 <tr>
681 <td class="parameter_name"><p>begin</p></td>
682 <td class="parameter_description"><p>lower closed bound of the interval</p></td>
683 <td class="parameter_annotations"> </td>
684 </tr>
685 <tr>
686 <td class="parameter_name"><p>end</p></td>
687 <td class="parameter_description"><p>upper open bound of the interval</p></td>
688 <td class="parameter_annotations"> </td>
689 </tr>
690 </tbody>
691 </table></div>
692 </div>
693 <div class="refsect3">
694 <a name="g-random-int-range.returns"></a><h4>Returns</h4>
695 <p> a random number</p>
696 </div>
697 </div>
698 <hr>
699 <div class="refsect2">
700 <a name="g-random-double"></a><h3>g_random_double ()</h3>
701 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
702 g_random_double (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
703 <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>
704 <div class="refsect3">
705 <a name="g-random-double.returns"></a><h4>Returns</h4>
706 <p> a random number</p>
707 </div>
708 </div>
709 <hr>
710 <div class="refsect2">
711 <a name="g-random-double-range"></a><h3>g_random_double_range ()</h3>
712 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gdouble" title="gdouble"><span class="returnvalue">gdouble</span></a>
713 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>,
714                        <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>
715 <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
716 [<em class="parameter"><code>begin</code></em>
717 ..<em class="parameter"><code>end</code></em>
718 ).</p>
719 <div class="refsect3">
720 <a name="g-random-double-range.parameters"></a><h4>Parameters</h4>
721 <div class="informaltable"><table class="informaltable" width="100%" border="0">
722 <colgroup>
723 <col width="150px" class="parameters_name">
724 <col class="parameters_description">
725 <col width="200px" class="parameters_annotations">
726 </colgroup>
727 <tbody>
728 <tr>
729 <td class="parameter_name"><p>begin</p></td>
730 <td class="parameter_description"><p>lower closed bound of the interval</p></td>
731 <td class="parameter_annotations"> </td>
732 </tr>
733 <tr>
734 <td class="parameter_name"><p>end</p></td>
735 <td class="parameter_description"><p>upper open bound of the interval</p></td>
736 <td class="parameter_annotations"> </td>
737 </tr>
738 </tbody>
739 </table></div>
740 </div>
741 <div class="refsect3">
742 <a name="g-random-double-range.returns"></a><h4>Returns</h4>
743 <p> a random number</p>
744 </div>
745 </div>
746 </div>
747 <div class="refsect1">
748 <a name="glib-Random-Numbers.other_details"></a><h2>Types and Values</h2>
749 <div class="refsect2">
750 <a name="GRand"></a><h3>GRand</h3>
751 <pre class="programlisting">typedef struct _GRand GRand;</pre>
752 <p>The GRand struct is an opaque data structure. It should only be
753 accessed through the g_rand_* functions.</p>
754 </div>
755 </div>
756 </div>
757 <div class="footer">
758 <hr>Generated by GTK-Doc V1.25.1</div>
759 </body>
760 </html>