MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ generate_memoryless()

double MayaFlux::Kinesis::Stochastic::Stochastic::generate_memoryless ( double  min,
double  max 
)
private

Definition at line 103 of file Stochastic.cpp.

104{
105 if (min != m_cached_min || max != m_cached_max) {
106 m_cached_min = min;
107 m_cached_max = max;
108 m_dist_dirty = true;
109 }
110
111 double raw_value = 0.0;
112
113 switch (m_algorithm) {
114 [[likely]] case Algorithm::UNIFORM:
115 return min + fast_uniform() * (max - min);
116
117 case Algorithm::NORMAL: {
119 raw_value = m_normal_dist(m_engine);
120 return std::clamp(raw_value, min, max);
121 }
122
125 raw_value = m_exponential_dist(m_engine);
126 raw_value /= max;
127 return min + raw_value * (max - min);
128 }
129
130 case Algorithm::POISSON: {
131 std::poisson_distribution<int> dist(static_cast<int>(max - min));
132 return static_cast<double>(dist(m_engine));
133 }
134
135 default:
136 return min + fast_uniform() * (max - min);
137 }
138}
void rebuild_distributions_if_needed(double min, double max)
std::exponential_distribution< double > m_exponential_dist
std::normal_distribution< double > m_normal_dist

References MayaFlux::Kinesis::Stochastic::EXPONENTIAL, fast_uniform(), m_algorithm, m_cached_max, m_cached_min, m_dist_dirty, m_engine, m_exponential_dist, m_normal_dist, MayaFlux::Kinesis::Stochastic::NORMAL, MayaFlux::Kinesis::Stochastic::POISSON, rebuild_distributions_if_needed(), and MayaFlux::Kinesis::Stochastic::UNIFORM.

Referenced by operator()().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: