UNPKG

randomness

Version:
24 lines 864 B
"use strict"; 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