MayaFlux 0.4.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 106 of file Stochastic.cpp.

107{
108 if (min != m_cached_min || max != m_cached_max) {
111 m_dist_dirty = true;
112 }
113
114 double raw_value = 0.0;
115
116 switch (m_algorithm) {
117 [[likely]] case Algorithm::UNIFORM:
118 return min + fast_uniform() * (max - min);
119
120 case Algorithm::NORMAL: {
122 raw_value = m_normal_dist(m_engine);
123 return std::clamp(raw_value, min, max);
124 }
125
128 raw_value = m_exponential_dist(m_engine);
129 raw_value /= max;
130 return min + raw_value * (max - min);
131 }
132
133 case Algorithm::POISSON: {
134 std::poisson_distribution<int> dist(static_cast<int>(max - min));
135 return static_cast<double>(dist(m_engine));
136 }
137
138 default:
139 return min + fast_uniform() * (max - min);
140 }
141}
void rebuild_distributions_if_needed(double min, double max)
std::exponential_distribution< double > m_exponential_dist
std::normal_distribution< double > m_normal_dist
std::vector< double > max(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Maximum value per window.
Definition Analysis.cpp:436
std::vector< double > min(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Minimum value per window.
Definition Analysis.cpp:420

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: