#include "../rng.h" #include "./generator.h" // parameters recommended by Nakazawa & Nakazawa // https://en.wikipedia.org/wiki/Lehmer_random_number_generator namespace splat { class xorshift32 : public PRNG { public: xorshift32(uint32_t genSeed) : PRNG(genSeed) { state = genSeed; } uint32_t generate() override { state ^= state << 13; state ^= state >> 17; state ^= state << 5; return state; } std::string getName() override { return "xorshift32"; } private: uint32_t state; }; }