distriprob
Version:
A library for calculating the PDF, CDFs, and quantile function values of common probability distributions
50 lines (49 loc) • 1.32 kB
JavaScript
;
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;