#include "rng_abstract.h" #include QVector RNG_Abstract::makeNumbersVector(int n, int min, int max) { const int bins = max - min + 1; QVector result(bins); for (int i = 0; i < n; ++i) { int number = rand(min, max); if ((number < min) || (number > max)) { qDebug() << "rand(" << min << "," << max << ") returned " << number; } else { result[number - min]++; } } return result; } double RNG_Abstract::testRandom(const QVector &numbers) const { int n = 0; for (int i = 0; i < numbers.size(); ++i) { n += numbers[i]; } double expected = (double)n / (double)numbers.size(); double chisq = 0; for (int i = 0; i < numbers.size(); ++i) { chisq += ((double)numbers[i] - expected) * ((double)numbers[i] - expected) / expected; } return chisq; }