31 lines
761 B
C++
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;
|
|
};
|
|
} |