UNPKG

distriprob

Version:

A library for calculating the PDF, CDFs, and quantile function values of common probability distributions

50 lines (49 loc) 1.32 kB
"use strict"; const async_1 = require("./async"); function randSync(n, quantileFctn, quantileFctnArgs, seed, randoms) { if (!randoms) { randoms = []; const sr = require("seedrandom"); let rng; if (seed) { rng = sr(seed); } else { rng = sr(); } while (randoms.length < n) { let rand = rng(); if (rand !== 0) { randoms.push(rng()); } } } const result = []; while (randoms.length > 0) { const args = [randoms.pop()].concat(quantileFctnArgs); result.push(quantileFctn.apply(null, args)); } return result; } exports.randSync = randSync; function rand(n, quantileFctn, quantileFctnParams, seed, fctnDependencies) { const randoms = []; const sr = require("seedrandom"); let rng; if (seed) { rng = sr(seed); } else { rng = sr(); } while (randoms.length < n) { let rand = rng(); if (rand !== 0) { randoms.push(rng()); } } const dependencies = [quantileFctn].concat(fctnDependencies); const randSyncArgs = [n, quantileFctn, quantileFctnParams, null, randoms]; return async_1.asyncGen(dependencies, randSync, randSyncArgs); } exports.rand = rand;