Blame docs/reference/glib/html/glib-Random-Numbers.html

Packit ae235b
Packit ae235b
<html>
Packit ae235b
<head>
Packit ae235b
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Packit ae235b
<title>Random Numbers: GLib Reference Manual</title>
Packit ae235b
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
Packit ae235b
<link rel="home" href="index.html" title="GLib Reference Manual">
Packit ae235b
<link rel="up" href="glib-utilities.html" title="GLib Utilities">
Packit ae235b
<link rel="prev" href="glib-GDateTime.html" title="GDateTime">
Packit ae235b
<link rel="next" href="glib-Hook-Functions.html" title="Hook Functions">
Packit ae235b
<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
Packit ae235b
<link rel="stylesheet" href="style.css" type="text/css">
Packit ae235b
</head>
Packit ae235b
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
Packit ae235b
Packit ae235b
Packit ae235b
Top  | 
Packit ae235b
                  Description
Packit ae235b
Packit ae235b
Home
Packit ae235b
Up
Packit ae235b
Prev
Packit ae235b
Next
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Random Numbers

Packit ae235b

Random Numbers — pseudo-random number generator

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Functions

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GRand *
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_new_with_seed ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GRand *
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_new_with_seed_array ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GRand *
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_new ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GRand *
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_copy ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
void
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_free ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
void
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_set_seed ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
void
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_set_seed_array ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
#define
Packit ae235b
Packit ae235b
g_rand_boolean()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
guint32
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_int ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
gint32
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_int_range ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
gdouble
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_double ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
gdouble
Packit ae235b
Packit ae235b
Packit ae235b
g_rand_double_range ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
void
Packit ae235b
Packit ae235b
Packit ae235b
g_random_set_seed ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
#define
Packit ae235b
g_random_boolean
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
guint32
Packit ae235b
Packit ae235b
Packit ae235b
g_random_int ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
gint32
Packit ae235b
Packit ae235b
Packit ae235b
g_random_int_range ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
gdouble
Packit ae235b
Packit ae235b
Packit ae235b
g_random_double ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
gdouble
Packit ae235b
Packit ae235b
Packit ae235b
g_random_double_range ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Types and Values

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
 
Packit ae235b
GRand
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Includes

Packit ae235b
#include <gmodule.h>
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Description

Packit ae235b

The following functions allow you to use a portable, fast and good

Packit ae235b
pseudo-random number generator (PRNG).

Packit ae235b

Do not use this API for cryptographic purposes such as key

Packit ae235b
generation, nonces, salts or one-time pads.

Packit ae235b

This PRNG is suitable for non-cryptographic use such as in games

Packit ae235b
(shuffling a card deck, generating levels), generating data for
Packit ae235b
a test suite, etc. If you need random data for cryptographic
Packit ae235b
purposes, it is recommended to use platform-specific APIs such
Packit ae235b
as /dev/random on UNIX, or CryptGenRandom() on Windows.

Packit ae235b

GRand uses the Mersenne Twister PRNG, which was originally

Packit ae235b
developed by Makoto Matsumoto and Takuji Nishimura. Further
Packit ae235b
information can be found at
Packit ae235b
this page.

Packit ae235b

If you just need a random number, you simply call the g_random_*

Packit ae235b
functions, which will create a globally used GRand and use the
Packit ae235b
according g_rand_* functions internally. Whenever you need a
Packit ae235b
stream of reproducible random numbers, you better create a
Packit ae235b
GRand yourself and use the g_rand_* functions directly, which
Packit ae235b
will also be slightly faster. Initializing a GRand with a
Packit ae235b
certain seed will produce exactly the same series of random
Packit ae235b
numbers on all platforms. This can thus be used as a seed for
Packit ae235b
e.g. games.

Packit ae235b

The g_rand*_range functions will return high quality equally

Packit ae235b
distributed random numbers, whereas for example the
Packit ae235b
(g_random_int()%max) approach often
Packit ae235b
doesn't yield equally distributed numbers.

Packit ae235b

GLib changed the seeding algorithm for the pseudo-random number

Packit ae235b
generator Mersenne Twister, as used by GRand. This was necessary,
Packit ae235b
because some seeds would yield very bad pseudo-random streams.
Packit ae235b
Also the pseudo-random integers generated by g_rand*_int_range()
Packit ae235b
will have a slightly better equal distribution with the new
Packit ae235b
version of GLib.

Packit ae235b

The original seeding and generation algorithms, as found in

Packit ae235b
GLib 2.0.x, can be used instead of the new ones by setting the
Packit ae235b
environment variable G_RANDOM_VERSION to the value of '2.0'.
Packit ae235b
Use the GLib-2.0 algorithms only if you have sequences of numbers
Packit ae235b
generated with Glib-2.0 that you need to reproduce exactly.

Packit ae235b
Packit ae235b
Packit ae235b

Functions

Packit ae235b
Packit ae235b

g_rand_new_with_seed ()

Packit ae235b
GRand *
Packit ae235b
g_rand_new_with_seed (guint32 seed);
Packit ae235b

Creates a new random number generator initialized with seed

Packit ae235b
.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

seed

Packit ae235b

a value to initialize the random number generator

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the new GRand

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_new_with_seed_array ()

Packit ae235b
GRand *
Packit ae235b
g_rand_new_with_seed_array (const guint32 *seed,
Packit ae235b
                            guint seed_length);
Packit ae235b

Creates a new random number generator initialized with seed

Packit ae235b
.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

seed

Packit ae235b

an array of seeds to initialize the random number generator

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

seed_length

Packit ae235b

an array of seeds to initialize the random number

Packit ae235b
generator

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the new GRand

Packit ae235b
Packit ae235b

Since: 2.4

Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_new ()

Packit ae235b
GRand *
Packit ae235b
g_rand_new (void);
Packit ae235b

Creates a new random number generator initialized with a seed taken

Packit ae235b
either from /dev/urandom (if existing) or from the current time
Packit ae235b
(as a fallback).

Packit ae235b

On Windows, the seed is taken from rand_s().

Packit ae235b
Packit ae235b

Returns

Packit ae235b

the new GRand

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_copy ()

Packit ae235b
GRand *
Packit ae235b
g_rand_copy (GRand *rand_);
Packit ae235b

Copies a GRand into a new one with the same exact state as before.

Packit ae235b
This way you can take a snapshot of the random number generator for
Packit ae235b
replaying later.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the new GRand

Packit ae235b
Packit ae235b

Since: 2.4

Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_free ()

Packit ae235b
void
Packit ae235b
g_rand_free (GRand *rand_);
Packit ae235b

Frees the memory allocated for the GRand.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_set_seed ()

Packit ae235b
void
Packit ae235b
g_rand_set_seed (GRand *rand_,
Packit ae235b
                 guint32 seed);
Packit ae235b

Sets the seed for the random number generator GRand to seed

Packit ae235b
.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

seed

Packit ae235b

a value to reinitialize the random number generator

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_set_seed_array ()

Packit ae235b
void
Packit ae235b
g_rand_set_seed_array (GRand *rand_,
Packit ae235b
                       const guint32 *seed,
Packit ae235b
                       guint seed_length);
Packit ae235b

Initializes the random number generator by an array of longs.

Packit ae235b
Array can be of arbitrary size, though only the first 624 values
Packit ae235b
are taken.  This function is useful if you have many low entropy
Packit ae235b
seeds, or if you require more then 32 bits of actual entropy for
Packit ae235b
your application.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

seed

Packit ae235b

array to initialize with

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

seed_length

Packit ae235b

length of array

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Since: 2.4

Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_boolean()

Packit ae235b
#define             g_rand_boolean(rand_)
Packit ae235b

Returns a random gboolean from rand_

Packit ae235b
.
Packit ae235b
This corresponds to a unbiased coin toss.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random gboolean

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_int ()

Packit ae235b
guint32
Packit ae235b
g_rand_int (GRand *rand_);
Packit ae235b

Returns the next random guint32 from rand_

Packit ae235b
 equally distributed over
Packit ae235b
the range [0..2^32-1].

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_int_range ()

Packit ae235b
gint32
Packit ae235b
g_rand_int_range (GRand *rand_,
Packit ae235b
                  gint32 begin,
Packit ae235b
                  gint32 end);
Packit ae235b

Returns the next random gint32 from rand_

Packit ae235b
 equally distributed over
Packit ae235b
the range [begin
Packit ae235b
..end
Packit ae235b
-1].

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

begin

Packit ae235b

lower closed bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

end

Packit ae235b

upper open bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_double ()

Packit ae235b
gdouble
Packit ae235b
g_rand_double (GRand *rand_);
Packit ae235b

Returns the next random gdouble from rand_

Packit ae235b
 equally distributed over
Packit ae235b
the range [0..1).

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_rand_double_range ()

Packit ae235b
gdouble
Packit ae235b
g_rand_double_range (GRand *rand_,
Packit ae235b
                     gdouble begin,
Packit ae235b
                     gdouble end);
Packit ae235b

Returns the next random gdouble from rand_

Packit ae235b
 equally distributed over
Packit ae235b
the range [begin
Packit ae235b
..end
Packit ae235b
).

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

rand_

Packit ae235b

a GRand

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

begin

Packit ae235b

lower closed bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

end

Packit ae235b

upper open bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_random_set_seed ()

Packit ae235b
void
Packit ae235b
g_random_set_seed (guint32 seed);
Packit ae235b

Sets the seed for the global random number generator, which is used

Packit ae235b
by the g_random_* functions, to seed
Packit ae235b
.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

seed

Packit ae235b

a value to reinitialize the global random number generator

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_random_boolean

Packit ae235b
#define             g_random_boolean()
Packit ae235b

Returns a random gboolean.

Packit ae235b
This corresponds to a unbiased coin toss.

Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random gboolean

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_random_int ()

Packit ae235b
guint32
Packit ae235b
g_random_int (void);
Packit ae235b

Return a random guint32 equally distributed over the range

Packit ae235b
[0..2^32-1].

Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_random_int_range ()

Packit ae235b
gint32
Packit ae235b
g_random_int_range (gint32 begin,
Packit ae235b
                    gint32 end);
Packit ae235b

Returns a random gint32 equally distributed over the range

Packit ae235b
[begin
Packit ae235b
..end
Packit ae235b
-1].

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

begin

Packit ae235b

lower closed bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

end

Packit ae235b

upper open bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_random_double ()

Packit ae235b
gdouble
Packit ae235b
g_random_double (void);
Packit ae235b

Returns a random gdouble equally distributed over the range [0..1).

Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_random_double_range ()

Packit ae235b
gdouble
Packit ae235b
g_random_double_range (gdouble begin,
Packit ae235b
                       gdouble end);
Packit ae235b

Returns a random gdouble equally distributed over the range

Packit ae235b
[begin
Packit ae235b
..end
Packit ae235b
).

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

begin

Packit ae235b

lower closed bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

end

Packit ae235b

upper open bound of the interval

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a random number

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Types and Values

Packit ae235b
Packit ae235b

GRand

Packit ae235b
typedef struct _GRand GRand;
Packit ae235b

The GRand struct is an opaque data structure. It should only be

Packit ae235b
accessed through the g_rand_* functions.

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Generated by GTK-Doc V1.27
Packit ae235b
</body>
Packit ae235b
</html>