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

31 lines
761 B
C++

//
// lehmer.cpp
// rng
//
// Created by Asher Falcon on 20/06/2025.
//
#include "../../rng.h"
#include "../generator.h"
// parameters recommended by Nakazawa & Nakazawa
// https://en.wikipedia.org/wiki/Lehmer_random_number_generator
namespace splat {
class lehmer_generator : public PRNG {
public:
lehmer_generator(uint32_t genSeed) : PRNG(genSeed) {
seed = genSeed;
}
uint32_t generate() override {
seed = (a * seed) % m;
return seed;
}
std::string getName() override {
return "lehmer";
}
private:
uint64_t a = 7759097958782935LL;
uint64_t m = 18055400005099021LL;
};
}