randomness
Version:
Randomness tests
24 lines • 864 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const mathjs_1 = require("mathjs");
const counter_1 = require("../utils/counter");
const test = (bits, alpha = 0.01) => {
const n = bits.length;
const [_zeroes, ones] = (0, counter_1.getCounts)(bits);
const proportion = ones / n;
const tau = 2 / Math.sqrt(n);
if (Math.abs(proportion - 0.5) > tau)
return [false, 0];
let observedRuns = 0;
for (let i = 0; i < bits.length; i++) {
if (bits[i] != bits[i + 1])
observedRuns += 1;
}
const p = 1 -
(0, mathjs_1.erf)(Math.abs(observedRuns - 2 * n * proportion * (1 - proportion)) /
(2 * Math.sqrt(2 * n) * proportion * (1 - proportion)));
const success = p >= alpha;
return [success, p];
};
exports.default = test;
//# sourceMappingURL=runs-test.js.map