This class differs from standard pseudo random number generators (rand()) in these points:
More...
|
| | RandomNumberGenerator () |
| | Constructs a random number generator that is seeded with a constant value.
|
| |
| quint32 | currentSeed () const |
| | Retrieves the current seed.
|
| |
| double | number (double min, double max) |
| |
| int | number (int min, int max) |
| |
| void | reseed () |
| | Seeds the generator again with the currentSeed().
|
| |
| void | seed (quint32 seed) |
| | Seeds the generator with the given value.
|
| |
| quint32 | seedByTime () |
| | Seeds the generator by current time.
|
| |
| quint32 | seedNonDeterministic () |
| | Seeds the generator from a non-deterministic random number generator.
|
| |
| bool | yesOrNo (double p) |
| |
|
|
static quint32 | nonDeterministicSeed () |
| | Produces a non-deterministic seed, as used by seedNonDeterministic()
|
| |
|
static quint32 | timeSeed () |
| | Produces a seed that includes at least the time as source of random data.
|
| |
- it uses a specified, independently implemented algorithm identical across platforms
- provides access to the used seed
- it can thus guarantee replayable sequences
- it provides convenient seeding of varying quality
◆ RandomNumberGenerator()
| Digikam::RandomNumberGenerator::RandomNumberGenerator |
( |
| ) |
|
|
explicit |
It is recommended to call a seed method after construction.
◆ currentSeed()
| quint32 Digikam::RandomNumberGenerator::currentSeed |
( |
| ) |
const |
◆ number() [1/2]
| double Digikam::RandomNumberGenerator::number |
( |
double |
min, |
|
|
double |
max |
|
) |
| |
- Returns
- A random double in the interval [min, max) (including min, excluding max)
- Warning
- This method is non re-entrant.
◆ number() [2/2]
| int Digikam::RandomNumberGenerator::number |
( |
int |
min, |
|
|
int |
max |
|
) |
| |
- Returns
- A random integer in the interval [min, max] (including min and max).
- Warning
- this method is non re-entrant.
◆ reseed()
| void Digikam::RandomNumberGenerator::reseed |
( |
| ) |
|
This is not a no-op, rather, the sequence of random numbers starts again from its beginning after each re-seed. Equivalent to seed(currentSeed())
◆ seed()
| void Digikam::RandomNumberGenerator::seed |
( |
quint32 |
seed | ) |
|
This is not meant to be called with a constant value, but with a value retrieved from currentSeed() on a previous run. Across platforms, the same sequence of random numbers will be generated for the same seed.
◆ seedByTime()
| quint32 Digikam::RandomNumberGenerator::seedByTime |
( |
| ) |
|
This is common practice and good enough for most purposes.
- Returns
- the new currentSeed().
◆ seedNonDeterministic()
| quint32 Digikam::RandomNumberGenerator::seedNonDeterministic |
( |
| ) |
|
This is the most secure seeding method.
- Returns
- the new currentSeed().
◆ yesOrNo()
| bool Digikam::RandomNumberGenerator::yesOrNo |
( |
double |
p | ) |
|
- Returns
- true with a probability of p (where p shall be in the interval [0, 1])
- Warning
- This method is non re-entrant.