Class RandomManager
Defined in File RandomManager.cuh
Class Documentation
-
class RandomManager
Singleton manager for initialising simulation wide random with a common seed This is an internal class, that should not be accessed directly by modellers Manages the shared array of curand state use by agent functions Manages the random engine/s used by host functions
See also
AgentRandom For random number generation during agent functions on the device
See also
HostRandom For random number generation during host functions
Public Functions
-
RandomManager()
Creates the random manager and calls reseed() with the return value from seedFromTime()
-
~RandomManager()
-
uint64_t seedFromTime()
Utility for generating a psuesdo-random seed to pass to init
Member fns
-
void reseed(uint64_t seed)
Reseeds all owned random generators
Note
Can be called multiple times to reseed, doing so releases existing memory allocations
-
detail::curandState *resize(size_type _length, cudaStream_t stream)
Resizes random array according to the rules: while(length<_length) length*=growthModifier if(shrinkModifier<1.0) while(length*shrinkModifier>_length) length*=shrinkModifier
-
void setGrowthModifier(float)
Accessors
-
float getGrowthModifier()
-
void setShrinkModifier(float)
-
float getShrinkModifier()
-
template<typename T, typename dist>
T getDistribution(dist &distribution) Generates a random number with the provided distribution
Note
Not believed to be thread-safe!
- Parameters:
distribution – A distribution object defined by <random>
- Template Parameters:
dist – random distribution type to be used for generation (this should be implicitly detected)
T – return type
-
uint64_t seed()
-
detail::curandState *cudaRandomState()
-
RandomManager(RandomManager const&) = delete
-
void operator=(RandomManager const&) = delete
-
RandomManager()