// // frequency_monobit.cpp // rng // // Created by Asher Falcon on 21/06/2025. // #include "../rng.h" #include "./rngtest.h" #include "./frequency_monobit.h" namespace splat { frequency_monobit_test::frequency_monobit_test(std::vector> &testData) : RNGTEST(testData) { testPValue = runTest(data); testPassed = testPValue > 0.01; } double frequency_monobit_test::runTest(std::vector> &data) { long long s = 0; for(auto bitset : data){ for(int i=0; i<32; i++){ s += (2*bitset[i])-1; } } double sobs = ((double)std::abs(s))/std::sqrt(data.size()*32); double pvalue = std::erfc(sobs/std::sqrt(2)); return pvalue; } std::string frequency_monobit_test::getName() { return "Frequency Monobit"; } }