arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator Class Reference

This is a fast random number generator, which uses linear congruences. It uses the modulus 263. More...

#include <random_number_generator.h>

Inheritance diagram for arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator:

Public Member Functions

 FastM2P63LinearCongruenceRandomNumberGenerator (unsigned long long multiplier, unsigned long long adder, unsigned long long seed)
 The constructor. More...
 
std::string GetName ()
 Returns a string representation of this object. More...
 
void LoadData (std::ifstream *)
 Loads data to reset the state of the random number generator to the state which was stored. More...
 
long long RandomLongLong ()
 Creates a random long long value. More...
 
mpf_t * RandomMpft ()
 Creates a random mpf_t value in the interval [0,1]. More...
 
void StoreData (std::ofstream *)
 Stores the current state of this random number generator, such that it can completely restore the current state with this data. More...
 
- Public Member Functions inherited from arbitraryprecisioncalculation::RandomNumberGenerator
virtual ~RandomNumberGenerator ()
 The destructor. More...
 

Detailed Description

This is a fast random number generator, which uses linear congruences. It uses the modulus 263.

Constructor & Destructor Documentation

arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator::FastM2P63LinearCongruenceRandomNumberGenerator ( unsigned long long  multiplier,
unsigned long long  adder,
unsigned long long  seed 
)

The constructor.

Parameters
multiplierThe factor in the linear congruence.
adderThe additive value in the linear congruence.
seedThe initial seed of the random number generator.

Member Function Documentation

std::string arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator::GetName ( )
virtual

Returns a string representation of this object.

Returns
The name of the object.

Implements arbitraryprecisioncalculation::RandomNumberGenerator.

void arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator::LoadData ( std::ifstream *  input_stream)
virtual

Loads data to reset the state of the random number generator to the state which was stored.

Parameters
input_streamThe stream which contains the data about the state of the random number generator.

Implements arbitraryprecisioncalculation::RandomNumberGenerator.

long long arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator::RandomLongLong ( )
virtual

Creates a random long long value.

Calculates the next random by the equation (adder + multiplier · S) mod 263, where S is the previous random value or the initial seed (if it is the first call of this function) and mod means the modulo operation.

Returns
The random value.

Implements arbitraryprecisioncalculation::RandomNumberGenerator.

mpf_t* arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator::RandomMpft ( )
virtual

Creates a random mpf_t value in the interval [0,1].

The random value is generated by a call of the random long long function and a division by the modulus 263.

Returns
The random value.

Implements arbitraryprecisioncalculation::RandomNumberGenerator.

void arbitraryprecisioncalculation::FastM2P63LinearCongruenceRandomNumberGenerator::StoreData ( std::ofstream *  output_stream)
virtual

Stores the current state of this random number generator, such that it can completely restore the current state with this data.

Parameters
output_streamThe output stream where the state should be stored.

Implements arbitraryprecisioncalculation::RandomNumberGenerator.


The documentation for this class was generated from the following file: