|
CGAL 5.1 - Geometric Object Generators
|
#include <CGAL/Random.h>
The class Random is a random numbers generator. It generates uniformly distributed random bool, int and double. It can be used as the random number generating function object in the STL algorithm std::random_shuffle.
Instances of Random can be seen as input streams. Different streams are independent of each other, i.e. the sequence of numbers from one stream does not depend upon how many numbers were extracted from the other streams. At each time, an instance has a state that uniquely determines the subsequent numbers being produced.
It can be very useful, e.g. for debugging, to reproduce a sequence of random numbers. This can be done by either initialising with a fixed seed, or by using the state functions as described below.
Random object is not deterministic when used by several threads at the same time, even if a fixed seed has been chosen.Implementation
We use the boost random library function boost::rand48 to generate the random numbers.
CGAL::get_default_random Types | |
| typedef unspecified_type | State |
| The State type. More... | |
Creation | |
| Random () | |
| Default constructor. More... | |
| Random (unsigned int seed) | |
Constructor initializing its internal state using seed. More... | |
Operations | |
| bool | get_bool () |
returns a random bool. More... | |
| template<int b> | |
| int | get_bits () |
returns a random int value from the interval \([0,2^b)\). More... | |
| int | get_int (int lower, int upper) |
returns a random int from the interval [lower,upper). More... | |
| double | get_double (double lower=0.0, double upper=1.0) |
returns a random double from the interval [lower,upper). More... | |
Distributions | |
The following member functions are a 1-to-1 correspondence to some distributions from the boost random library. | |
| template<typename IntType > | |
| IntType | uniform_smallint (IntType lower=0, IntType upper=9) |
returns a random IntType from the interval [lower,upper). More... | |
| template<typename IntType > | |
| IntType | uniform_int (IntType lower=0, IntType upper=9) |
returns a random IntType from the interval [lower,upper). More... | |
| template<typename RealType > | |
| Realtype | uniform_real (RealType lower=0.0, RealType upper=1.0) |
returns a random RealType from the interval [lower,upper). More... | |
| template<typename RealType > | |
| RealType | uniform_01 () |
returns a random RealType from the interval [0,1). More... | |
| template<typename IntType > | |
| IntType | operator() (IntType upper) |
returns randomuniform_int<IntType>( 0, upper-1). More... | |
Seed and State Functions | |
| unsigned int | get_seed () const |
| returns the seed used for initialization. More... | |
| void | save_state (State &state) const |
saves the current internal state in state. More... | |
| void | restore_state (State const &state) |
restores the internal state from state. More... | |
Equality Test | |
| bool | operator== (Random const &random2) const |
returns true, iff the random object and random2 have equal internal states. More... | |
| typedef unspecified_type CGAL::Random::State |
The State type.
| CGAL::Random::Random | ( | ) |
Default constructor.
The seed is chosen based on the system time.
| CGAL::Random::Random | ( | unsigned int | seed | ) |
Constructor initializing its internal state using seed.
Equal values for seed result in equal sequences of random numbers.
| int CGAL::Random::get_bits | ( | ) |
returns a random int value from the interval \([0,2^b)\).
This is supposed to be efficient.
| bool CGAL::Random::get_bool | ( | ) |
returns a random bool.
| double CGAL::Random::get_double | ( | double | lower = 0.0, |
| double | upper = 1.0 |
||
| ) |
returns a random double from the interval [lower,upper).
| int CGAL::Random::get_int | ( | int | lower, |
| int | upper | ||
| ) |
returns a random int from the interval [lower,upper).
| unsigned int CGAL::Random::get_seed | ( | ) | const |
returns the seed used for initialization.
| IntType CGAL::Random::operator() | ( | IntType | upper | ) |
returns randomuniform_int<IntType>( 0, upper-1).
| bool CGAL::Random::operator== | ( | Random const & | random2 | ) | const |
returns true, iff the random object and random2 have equal internal states.
| void CGAL::Random::restore_state | ( | State const & | state | ) |
restores the internal state from state.
| void CGAL::Random::save_state | ( | State & | state | ) | const |
saves the current internal state in state.
| RealType CGAL::Random::uniform_01 | ( | ) |
returns a random RealType from the interval [0,1).
RealType can be float, double, etc.
| IntType CGAL::Random::uniform_int | ( | IntType | lower = 0, |
| IntType | upper = 9 |
||
| ) |
returns a random IntType from the interval [lower,upper).
IntType can be an integral type as int, std::ptrdiff_t, std::size_t,etc.
get_int this function may return upper. | Realtype CGAL::Random::uniform_real | ( | RealType | lower = 0.0, |
| RealType | upper = 1.0 |
||
| ) |
returns a random RealType from the interval [lower,upper).
RealType can be float, double, etc.
| IntType CGAL::Random::uniform_smallint | ( | IntType | lower = 0, |
| IntType | upper = 9 |
||
| ) |
returns a random IntType from the interval [lower,upper).
IntType can be an integral type as int, std::ptrdiff_t, std::size_t,etc.
get_int this function may return upper.