rng/generators/xorshift.cpp
2025-07-06 17:13:58 +01:00

25 lines
686 B
C++

#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;
};
}