Kepler's Torus
uniform.h
1 #ifndef CAPSTONE_UNIFORM_H
2 #define CAPSTONE_UNIFORM_H
3 
4 #include "../distribution.h"
5 #include "../../bounds.h"
6 
8 struct Uniform : Distribution {
10  std::uniform_real_distribution <double> realDistribution;
11 
13  Bounds const bounds;
14 
18  explicit Uniform (Bounds bounds) :
19  Uniform (bounds, generateSeed()) {}
20 
25  Uniform (Bounds bounds, unsigned int seed) :
26  Distribution (seed),
27  bounds {bounds},
28  realDistribution (bounds.lower, bounds.upper) {}
29 
31  [[nodiscard]] double random() {
32  return realDistribution (mt);
33  }
34 };
35 
36 
37 #endif //CAPSTONE_UNIFORM_H
38 
39 /* Copyright © 2022 Aaron Alef */
Store lower inclusive and upper exclusive boundaries as container for interaction with random number ...
Definition: bounds.h:8
Uniform(Bounds bounds)
Definition: uniform.h:18
double random()
Definition: uniform.h:31
std::mt19937 mt
Mersenne Twister pseudo-random number generator, initialised by the given seed and used to generate n...
Definition: distribution.h:16
std::uniform_real_distribution< double > realDistribution
Definition: uniform.h:10
Uniform(Bounds bounds, unsigned int seed)
Definition: uniform.h:25
std::size_t const seed
Seed used to initialise the random number generator.
Definition: distribution.h:14
Definition: uniform.h:8
Abstract base class for initialising random number distributions.
Definition: distribution.h:7
Bounds const bounds
Definition: uniform.h:13