glib.RandG.RandG Class Reference

List of all members.

Detailed Description

Description 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 www.math.keio.ac.jp/~matumoto/emt.html. If you just need a random number, you simply call the g_random_* functions, which will create a globally used GRand and use the according g_rand_* functions internally. Whenever you need a stream of reproducible random numbers, you better create a GRand yourself and use the g_rand_* functions directly, which will also be slightly faster. Initializing a GRand with a certain seed will produce exactly the same series of random numbers on all platforms. This can thus be used as a seed for e.g. games. The g_rand*_range functions will return high quality equally distributed random numbers, whereas for example the (g_random_int()max) approach often doesn't yield equally distributed numbers. GLib changed the seeding algorithm for the pseudo-random number generator Mersenne Twister, as used by GRand and GRandom. This was necessary, because some seeds would yield very bad pseudo-random streams. Also the pseudo-random integers generated by g_rand*_int_range() will have a slightly better equal distribution with the new version of GLib. The original seeding and generation algorithms, as found in GLib 2.0.x, can be used instead of the new ones by setting the environment variable G_RANDOM_VERSION 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.


Public Member Functions

GRandgetRandGStruct ()
 this (GRand *gRand)
 Sets our main struct and passes it to the parent class.
RandG randCopy ()
 Copies a GRand into a new one with the same exact state as before.
void randFree ()
 Frees the memory allocated for the GRand.
void randSetSeed (uint seed)
 Sets the seed for the random number generator GRand to seed.
void randSetSeedArray (uint *seed, uint seedLength)
 Initializes the random number generator by an array of longs.
uint randInt ()
 Returns the next random guint32 from rand_ equally distributed over the range [0.
int randIntRange (int begin, int end)
 Returns the next random gint32 from rand_ equally distributed over the range [begin.
double randDouble ()
 Returns the next random gdouble from rand_ equally distributed over the range [0.
double randDoubleRange (double begin, double end)
 Returns the next random gdouble from rand_ equally distributed over the range [begin.

Static Public Member Functions

static RandG randNewWithSeed (uint seed)
 Creates a new random number generator initialized with seed.
static RandG randNewWithSeedArray (uint *seed, uint seedLength)
 Creates a new random number generator initialized with seed.
static RandG randNew ()
 Creates a new random number generator initialized with a seed taken either from /dev/urandom (if existing) or from the current time (as a fallback).
static void randomSetSeed (uint seed)
 Sets the seed for the global random number generator, which is used by the g_random_* functions, to seed.
static uint randomInt ()
 Return a random guint32 equally distributed over the range [0.
static int randomIntRange (int begin, int end)
 Returns a random gint32 equally distributed over the range [begin.
static double randomDouble ()
 Returns a random gdouble equally distributed over the range [0.
static double randomDoubleRange (double begin, double end)
 Returns a random gdouble equally distributed over the range [begin.

Protected Member Functions

void * getStruct ()
 the main Gtk struct as a void*

Protected Attributes

GRandgRand
 the main Gtk struct


Constructor & Destructor Documentation

glib.RandG.RandG.this ( GRand gRand  ) 

Sets our main struct and passes it to the parent class.


Member Function Documentation

GRand* glib.RandG.RandG.getRandGStruct (  ) 

void* glib.RandG.RandG.getStruct (  )  [protected]

the main Gtk struct as a void*

RandG glib.RandG.RandG.randCopy (  ) 

Copies a GRand 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. rand_: a GRand. Returns: the new GRand. Since 2.4

double glib.RandG.RandG.randDouble (  ) 

Returns the next random gdouble from rand_ equally distributed over the range [0.

.1). rand_: a GRand. Returns: A random number.

double glib.RandG.RandG.randDoubleRange ( double  begin,
double  end 
)

Returns the next random gdouble from rand_ equally distributed over the range [begin.

.end). rand_: a GRand. begin: lower closed bound of the interval. end: upper open bound of the interval. Returns: A random number.

void glib.RandG.RandG.randFree (  ) 

Frees the memory allocated for the GRand.

rand_: a GRand.

uint glib.RandG.RandG.randInt (  ) 

Returns the next random guint32 from rand_ equally distributed over the range [0.

.2^32-1]. rand_: a GRand. Returns: A random number.

int glib.RandG.RandG.randIntRange ( int  begin,
int  end 
)

Returns the next random gint32 from rand_ equally distributed over the range [begin.

.end-1]. rand_: a GRand. begin: lower closed bound of the interval. end: upper open bound of the interval. Returns: A random number.

static RandG glib.RandG.RandG.randNew (  )  [static]

Creates a new random number generator initialized with a seed taken either from /dev/urandom (if existing) or from the current time (as a fallback).

Returns: the new GRand.

static RandG glib.RandG.RandG.randNewWithSeed ( uint  seed  )  [static]

Creates a new random number generator initialized with seed.

seed: a value to initialize the random number generator. Returns: the new GRand.

static RandG glib.RandG.RandG.randNewWithSeedArray ( uint seed,
uint  seedLength 
) [static]

Creates a new random number generator initialized with seed.

seed: an array of seeds to initialize the random number generator. seed_length: an array of seeds to initialize the random number generator. Returns: the new GRand. Since 2.4

static double glib.RandG.RandG.randomDouble (  )  [static]

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

.1). Returns: A random number.

static double glib.RandG.RandG.randomDoubleRange ( double  begin,
double  end 
) [static]

Returns a random gdouble equally distributed over the range [begin.

.end). begin: lower closed bound of the interval. end: upper open bound of the interval. Returns: A random number.

static uint glib.RandG.RandG.randomInt (  )  [static]

Return a random guint32 equally distributed over the range [0.

.2^32-1]. Returns: A random number.

static int glib.RandG.RandG.randomIntRange ( int  begin,
int  end 
) [static]

Returns a random gint32 equally distributed over the range [begin.

.end-1]. begin: lower closed bound of the interval. end: upper open bound of the interval. Returns: A random number.

static void glib.RandG.RandG.randomSetSeed ( uint  seed  )  [static]

Sets the seed for the global random number generator, which is used by the g_random_* functions, to seed.

seed: a value to reinitialize the global random number generator.

void glib.RandG.RandG.randSetSeed ( uint  seed  ) 

Sets the seed for the random number generator GRand to seed.

rand_: a GRand. seed: a value to reinitialize the random number generator.

void glib.RandG.RandG.randSetSeedArray ( uint seed,
uint  seedLength 
)

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. rand_: a GRand. seed: array to initialize with seed_length: length of array Since 2.4


Member Data Documentation

GRand* glib.RandG.RandG.gRand [protected]

the main Gtk struct


SourceForge.net Logo DSource.org Logo digitalmars.com Logo