25 lines
686 B
C++
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;
|
|
};
|
|
} |