rng/generators/xorshift.cpp
2025-07-07 10:27:51 +01:00

23 lines
552 B
C++

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