// // main.cpp // rng // // Created by Asher Falcon on 17/06/2025. // #include "rng.h" #include "generators/LCG/lehmer.h" #include "generators/mt19937.h" #include "generators/xorshift.h" #include "randomness_tests/frequency_monobit.h" #include "randomness_tests/frequency_block.h" #include "randomness_tests/runs.h" #include "randomness_tests/runs_ones.h" #include "randomness_tests/binary_matrix.h" #include "generators/generator.h" #include "randomness_tests/rngtest.h" namespace splat { template void addGen(std::vector> &generators, uint32_t &seed){ generators.push_back(std::make_unique(seed)); } std::vector> getAllGenerators(uint32_t seed){ std::vector> generators; // add generators here addGen(generators, seed); addGen(generators, seed); addGen(generators,seed); return generators; } template void addTest(std::vector> &tests, std::vector> &data){ tests.push_back(std::make_unique(data)); } std::vector> getAllTests(std::vector> &data){ std::vector> tests; // add generators here addTest(tests, data); addTest(tests, data); addTest(tests, data); addTest(tests, data); addTest(tests, data); return tests; } } int main(int argc, const char * argv[]) { int seed = 9472161; int blocksgenerated = 1000000; std::vector> generators = splat::getAllGenerators(seed); for(const std::unique_ptr &generator : generators){ std::cout << generator->getName() << ": \n"; std::vector> bits; for(int i=0; igenerate()); } std::vector> tests = splat::getAllTests(bits); for(const std::unique_ptr &test : tests){ std::string namestr = test->getName(); while(namestr.length() < 30){ namestr.append(" "); } std::cout << " - " << namestr << " = " << (test->passed()?"✅ PASS":"❌ FAIL") << " ("<< std::fixed << std::setprecision(8) << test->value() <<")\n"; } } return 0; };