#pragma once #include #include #include #include "generator.h" namespace splat { std::array mt19937_init(uint32_t seed); std::array mt19937_twist(const std::array& state); std::array mt19937_temper(const std::array& state); class mt19937_generator : public PRNG { public: explicit mt19937_generator(uint32_t seed); uint32_t generate(); std::string getName(); private: std::array state; std::array random_values; size_t position = 624; void nextblock(); }; }