Class RNGController¶
 Defined in File RNGController.h
Inheritance Relationships¶
Base Type¶
public random_numbers::Xoroshiro256plus
(Class Xoroshiro256plus)
Class Documentation¶

class
RNGController
: public virtual random_numbers::Xoroshiro256plus¶ Contains the functions for random number generation, based on the Xoroshiro256+ algorithm.
Public Functions

RNGController
()¶ Standard constructor.

void
setSeed
(uint64_t seed)¶ Sets the seed to the given input. Is only seeded if the seed hasn’t already been provided.
 Parameters
seed
: the input seed.

void
wipeSeed
()¶ Clears the seed, if it has already been set. Keeps other simulation parameters, such as sigma and tau.

unsigned long
i0
(unsigned long max)¶ Generates a random number uniformly from 0 to the maximum value provided.
 Return
 an integer of the produced random number.
 Parameters
max
: the maximum number.

double
norm
()¶ Generates a normally distributed number Uses the standard normal distribution using the Ziggurat method.
 Return
 the random number from a normal distribution.

double
rayleigh
()¶ Returns a random distance from a 2 dimensional normal distribution, also called the rayleigh distribution.
 Return
 dispersal distance of a rayleigh distribution

double
rayleighMinDist
(const double &dist)¶ Generates a random distance from a rayleigh distribution, given that the distance is more than some minimum.
 Return
 a random distance greater than the minimum provided
 Parameters
dist
: the minimum distance to generate

double
rayleighCDF
(const double &dist)¶ Gets the cumulative probability of a distance from the rayleigh distribution.
 Return
 the probability of producing the given distance
 Parameters
dist
: the distance to obtain the probability of

void
setDispersalParams
(const double sigmain, const double tauin)¶ Sets the dispersal parameters, avoiding requirement to provide these numbers each function call. This is only relevant for fattailed dispersal calls.
 Parameters
sigmain
: the fatness of the fattailed dispersal kernel.tauin
: the width of the fattailed dispersal kernel.

double
fattail
(double z)¶ Call from the fattailed dispersal kernel with the provided sigma.
 Return
 a random number drawn from the fattailed dispersal kernel.
 Parameters
z
: the desired sigma.

double
fattailCDF
(const double &distance)¶ Gets the cumulative probability density of travelling the distance.
 Return
 the probability of dispersing less than or equal to distance
 Parameters
distance
: the distance to obtain the cumulative probability for

double
fattailMinDistance
(const double &min_distance)¶ Gets a fattailed random distance greater than some minimum.
 Return
 a fattailed distance greater than the minimum
 Parameters
min_distance
: the minimum distance to return

double
fattail
()¶ Call from fattailed dispersal kernel. This function requires setDispersalParams() has already been called.
 Return
 a random number drawn from the fattailed dispersal kernel.

double
fattail_old
()¶ Old version of the function call reparameterised for different nu and sigma.
 Return
 a random number drawn from the fattailed dispersal kernel.

double
direction
()¶ Generates a direction in radians.
 Return
 the direction in radians

bool
event
(double event_probability)¶ For a given event probability, returns the probability that the event has occured.
 Return
 whether or not the event has occured.
 Parameters
event_probability
: the event probability.

double
normUniform
()¶ Normal distribution, with percentage chance to choose a uniform distribution instead.
 Note
 This function will not produce the same output as norm() for the same parameters, even with a zero chance of picking from the uniform distribution (due to random number draws).
 Return
 normally (or uniformly) distributed number

double
normUniformMinDistance
(const double &min_distance)¶ Generates a random distance from a normuniform distribution, given that the distance is more than some minimum.
 Return
 a random distance greater than the minimum provided
 Parameters
dist
: the minimum distance to generate

double
uniform
()¶ Draws a random number from a uniform distribution between 0 and cutoff.
 Return
 a random number in (0, cutoff)

double
uniformMinDistance
(const double &min_distance)¶ Generates a random distance from a uniform distribution, given that the distance is more than some minimum.
 Return
 a random distance greater than the minimum provided
 Parameters
dist
: the minimum distance to generate

double
uniformUniform
()¶ Two uniform distributions, the first between 0 and 0.1*cutoff, and the second between 0.9*cutoff and cutoff. Selects from both distributions equally.
 Note
 The mean for this function should be identical to a uniform distribution between 0 and cutoff.
 Return
 uniformly distributed number

double
uniformUniformMinDistance
(const double &min_distance)¶ Generates a random distance from a uniformuniform distribution, given that the distance is more than some minimum.
 Return
 a random distance greater than the minimum provided
 Parameters
dist
: the minimum distance to generate

void
setDispersalMethod
(const string &dispersal_method, const double &m_probin, const double &cutoffin)¶ Sets the dispersal method by creating the link between dispersalFunction() and the correct dispersal character.
 Parameters
dispersal_method
: string containing the dispersal type. Can be one of [normal, fattail, normuniform]m_probin
: the probability of drawing from the uniform distribution. Only relevant for uniform dispersals.cutoffin
: the maximum value to be drawn from the uniform dispersal. Only relevant for uniform dispersals.

double
dispersal
()¶ Runs the dispersal with the allocated dispersal function.
 Note
 This function will never return a value larger than the size of LONG_MAX to avoid issues of converting doubles to integers. For dispersal distance within coalescence simulations, this is seemed a reasonable assumption, but may cause issues if code is reused in later projects.
 Return
 distance the dispersal distance

double
dispersalMinDistance
(const double &min_distance)¶ Get a dispersal distance with some minimum.
This function will never return doubles larger than LONG_MAX to avoid integer overflows.
 Return
 the random dispersal distance greater than or equal to the minimum
 Parameters
min_distance
: the minimum distance to disperse

unsigned long
randomLogarithmic
(long double alpha)¶ Sample from a logarithmic distribution.
Uses the LK sampling method for generating random numbers from a logarithmic distribution, as described by Kemp (1981).
 Return
 the randomly generated logarithmic number
 Parameters
alpha
: alpha parameter for the logarithmic distribution

double
randomExponential
(double lambda)¶

uint64_t
next
()¶ Generates the next random integer.
 Return
 a random integer from 0 to max of 2^64

double
d01
()¶ Generates a random number in the range [0, 1)
 Return
 a random double
Public Static Functions
Protected Attributes

std::array<uint64_t, 4>
shuffle_table
¶
Friends

ostream &
operator<<
(ostream &os, const RNGController &r)¶ Outputs the NRrand object to the output stream. Used for saving the object to file.
 Return
 the output stream.
 Parameters
os
: the output stream.r
: the NRrand object to output.

istream &
operator>>
(istream &is, RNGController &r)¶ Inputs the NRrand object from the input stream. Used for reading the NRrand object from a file.
 Return
 the input stream.
 Parameters
is
: the input stream.r
: the NRrand object to input to.
