UNPKG

randomness

Version:
30 lines 1.07 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const mathjs_1 = require("mathjs"); const fft_js_1 = __importDefault(require("fft-js")); const test = (bits, alpha = 0.01) => { const n = bits.length; const ts = []; const max = n % 2 == 0 ? n : n - 1; for (let i = 0; i < max; i++) { ts.push(bits[i] * 2 - 1); } const fs = fft_js_1.default.fft(ts); const magnitudes = fft_js_1.default.util.fftMag(fs); const T = Math.sqrt(Math.log(1.0 / 0.05) * n); const N0 = (0.95 * n) / 2.0; let N1 = 0; for (let index = 0; index < magnitudes.length; index++) { if (magnitudes[index] < T) N1 += 1; } const d = (N1 - N0) / Math.sqrt((n * 0.95 * 0.05) / 4); const p = 1 - (0, mathjs_1.erf)(Math.abs(d) / Math.sqrt(2)); const success = p >= alpha; return [success, p]; }; exports.default = test; //# sourceMappingURL=dft-test.js.map