aboutsummaryrefslogtreecommitdiff
path: root/backend/RNG.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/RNG.cpp')
-rw-r--r--backend/RNG.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/backend/RNG.cpp b/backend/RNG.cpp
new file mode 100644
index 0000000..bc3e57b
--- /dev/null
+++ b/backend/RNG.cpp
@@ -0,0 +1,32 @@
+#include "RNG.h"
+
+using std::uniform_int_distribution;
+using std::uniform_real_distribution;
+
+RNG::RNG() : dev(), rng(dev()) { }
+
+RNG & RNG::get() {
+ static RNG instance;
+ return instance;
+}
+
+int RNG::rand_int(const int upper) {
+ return this->rand_int(0, upper);
+}
+int RNG::rand_int(const int lower, const int upper) {
+ uniform_int_distribution<int> random_dist(lower, upper);
+ return random_dist(rng);
+}
+
+double RNG::rand_double() {
+ return this->rand_double(0.f, 1.f);
+}
+double RNG::rand_double(const double lower, const double upper) {
+ uniform_real_distribution<double> random_dist(lower, upper);
+ return random_dist(rng);
+}
+
+bool RNG::rand_bool() {
+ return rand_int(0, 1);
+}
+