#ifndef _RANDOM_HPP #define _RANDOM_HPP #include class RandomGenerator { std::mt19937 rng; uint32_t initialSeed; public: void seed() { rng.seed(initialSeed = std::random_device{}()); } void seed(uint32_t customSeed) { rng.seed(initialSeed = customSeed); } unsigned getUInt() { std::uniform_int_distribution dist; return dist(rng); } unsigned getUInt(unsigned max) { std::uniform_int_distribution dist(0, max); return dist(rng); } unsigned getUInt(unsigned min, unsigned max) { std::uniform_int_distribution dist(min, max); return dist(rng); } double getDouble(double max) { std::uniform_real_distribution dist(0.0, max); return dist(rng); } double getDouble(double min, double max) { std::uniform_real_distribution dist(min, max); return dist(rng); } bool getBool(float chance) { return getDouble(1.0) <= chance && chance != 0.0f; } }; #endif