Class AgentRandom
Defined in File AgentRandom.cuh
Class Documentation
-
class AgentRandom
Utility for accessing random generation within agent functions This should only be instantiated by FLAMEGPU_API Wraps curand functions to access an internal curand state *
Public Functions
-
__forceinline__ __device__ AgentRandom(detail::curandState *d_rng)
Constructs an AgentRandom instance
- Parameters:
d_rng – ThreadSafe device curand state instance this is a unique instance for the thread among all concurrently executing kernels
-
template<typename T>
__forceinline__ __device__ T uniform() const Returns a float uniformly distributed between 0.0 and 1.0.
Note
It may return from 0.0 to 1.0, where 0.0 is included and 1.0 is excluded.
Note
Available as float or double
-
template<typename T>
__forceinline__ __device__ T normal() const Returns a normally distributed float with mean 0.0 and standard deviation 1.0.
Note
This result can be scaled and shifted to produce normally distributed values with any mean/stddev.
Note
Available as float or double
-
template<typename T>
__forceinline__ __device__ T logNormal(T mean, T stddev) const Returns a log-normally distributed float based on a normal distribution with the given mean and standard deviation.
Note
Available as float or double
-
template<typename T>
__forceinline__ __device__ T uniform(T min, T max) const Returns an integer uniformly distributed in the inclusive range [min, max] or Returns a floating point value uniformly distributed in the exclusive-inclusive range (min, max]
Uniform Range
Note
Available as signed and unsigned: char, short, int, long long, float, double
- Template Parameters:
T – return type
-
template<>
__forceinline__ __device__ float uniform() const All templates are specialised Uniform floating point
-
template<>
__forceinline__ __device__ float normal() const Normal floating point
-
template<>
__forceinline__ __device__ float logNormal(const float mean, const float stddev) const Log Normal floating point
-
template<>
__forceinline__ __device__ double logNormal(const double mean, const double stddev) const
-
template<>
__forceinline__ __device__ int64_t uniform(const int64_t min, const int64_t max) const
-
template<>
__forceinline__ __device__ uint64_t uniform(const uint64_t min, const uint64_t max) const
-
template<>
__forceinline__ __device__ float uniform(const float min, const float max) const
-
template<>
__forceinline__ __device__ double uniform(const double min, const double max) const
-
__forceinline__ __device__ AgentRandom(detail::curandState *d_rng)