rng/randomness_tests/frequency_monobit.cpp
2025-07-07 10:27:51 +01:00

33 lines
824 B
C++

//
// 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<std::bitset<32>> &testData) : RNGTEST(testData) {
testPValue = runTest(data);
testPassed = testPValue > 0.01;
}
double frequency_monobit_test::runTest(std::vector<std::bitset<32>> &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";
}
}