Random Class Reference
[Miscellaneous Tools]

#include <lemon/random.h>

List of all members.


Detailed Description

The Mersenne Twister is a twisted generalized feedback shift-register generator of Matsumoto and Nishimura. The period of this generator is $ 2^{19937} - 1 $ and it is equi-distributed in 623 dimensions for 32-bit numbers. The time performance of this generator is comparable to the commonly used generators.

This implementation is specialized for both 32-bit and 64-bit architectures. The generators differ sligthly in the initialization and generation phase so they produce two completly different sequences.

The generator gives back random numbers of serveral types. To get a random number from a range of a floating point type you can use one form of the operator() or the real() member function. If you want to get random number from the {0, 1, ..., n-1} integer range use the operator[] or the integer() method. And to get random number from the whole range of an integer type you can use the argumentless integer() or uinteger() functions. After all you can get random bool with equal chance of true and false or given probability of true result with the boolean() member functions.

      // The commented code is identical to the other
      double a = rnd();                     // [0.0, 1.0)
      // double a = rnd.real();             // [0.0, 1.0)
      double b = rnd(100.0);                // [0.0, 100.0)
      // double b = rnd.real(100.0);        // [0.0, 100.0)
      double c = rnd(1.0, 2.0);             // [1.0, 2.0)
      // double c = rnd.real(1.0, 2.0);     // [1.0, 2.0)
      int d = rnd[100000];                  // 0..99999
      // int d = rnd.integer(100000);       // 0..99999
      int e = rnd[6] + 1;                   // 1..6
      // int e = rnd.integer(1, 1 + 6);     // 1..6
      int b = rnd.uinteger<int>();          // 0 .. 2^31 - 1
      int c = rnd.integer<int>();           // - 2^31 .. 2^31 - 1
      bool g = rnd.boolean();               // P(g = true) = 0.5
      bool h = rnd.boolean(0.8);            // P(h = true) = 0.8

The lemon provides a global instance of the random number generator which name is rnd. Usually it is a good programming convenience to use this global generator to get random numbers.

Author:
Balazs Dezso


Public Member Functions

 Random ()
 Constructor.
template<typename Number>
 Random (Number seed)
 Constructor.
template<typename Iterator>
 Random (Iterator begin, Iterator end)
 Constructor.
 Random (const Random &other)
 Copy constructor.
Randomoperator= (const Random &other)
 Assign operator.
template<typename Number>
Number real ()
 Returns a random real number from the range [0, 1).
template<typename Number>
Number real (Number b)
 Returns a random real number the range [0, b).
template<typename Number>
Number real (Number a, Number b)
 Returns a random real number from the range [a, b).
double operator() ()
 Returns a random real number from the range [0, 1).
template<typename Number>
Number operator() (Number b)
 Returns a random real number from the range [0, b).
template<typename Number>
Number operator() (Number a, Number b)
 Returns a random real number from the range [a, b).
template<typename Number>
Number integer (Number b)
 Returns a random integer from a range.
template<typename Number>
Number integer (Number a, Number b)
 Returns a random integer from a range.
template<typename Number>
Number operator[] (Number b)
 Returns a random integer from a range.
template<typename Number>
Number uinteger ()
 Returns a random non-negative integer.
template<typename Number>
Number integer ()
 Returns a random integer.
bool boolean ()
 Returns a random bool.
bool boolean (double p)
 Returns a random bool.


Constructor & Destructor Documentation

Random (  )  [inline]

Constructor with constant seeding.

Random ( Number  seed  )  [inline]

Constructor with seed. The current number type will be converted to the architecture word type.

Random ( Iterator  begin,
Iterator  end 
) [inline]

Constructor with array seeding. The given range should contain any number type and the numbers will be converted to the architecture word type.

Random ( const Random other  )  [inline]

Copy constructor. The generated sequence will be identical to the other sequence. It can be used to save the current state of the generator and later use it to generate the same sequence.


Member Function Documentation

Random& operator= ( const Random other  )  [inline]

Assign operator. The generated sequence will be identical to the other sequence. It can be used to save the current state of the generator and later use it to generate the same sequence.

Number real (  )  [inline]

It returns a random real number from the range [0, 1). The default Number type is double.

Number real ( Number  b  )  [inline]

It returns a random real number from the range [0, b).

Number real ( Number  a,
Number  b 
) [inline]

It returns a random real number from the range [a, b).

double operator() (  )  [inline]

It returns a random double from the range [0, 1).

Number operator() ( Number  b  )  [inline]

It returns a random real number from the range [0, b).

Number operator() ( Number  a,
Number  b 
) [inline]

It returns a random real number from the range [a, b).

Number integer ( Number  b  )  [inline]

It returns a random integer from the range {0, 1, ..., b - 1}.

Number integer ( Number  a,
Number  b 
) [inline]

It returns a random integer from the range {a, a + 1, ..., b - 1}.

Number operator[] ( Number  b  )  [inline]

It returns a random integer from the range {0, 1, ..., b - 1}.

Number uinteger (  )  [inline]

It returns a random non-negative integer uniformly from the whole range of the current Number type. The default result type of this function is unsigned int.

Number integer (  )  [inline]

It returns a random integer uniformly from the whole range of the current Number type. The default result type of this function is int.

bool boolean (  )  [inline]

It returns a random bool

bool boolean ( double  p  )  [inline]

It returns a random bool with given probability of true result


The documentation for this class was generated from the following file:
Generated on Tue Oct 31 09:51:20 2006 for LEMON by  doxygen 1.5.1