UNPKG

@lazy-random/df-algorithm

Version:
51 lines (50 loc) 2.17 kB
!function(e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports, require("@lazy-random/expect"), require("num-is-zero")) : "function" == typeof define && define.amd ? define([ "exports", "@lazy-random/expect", "num-is-zero" ], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).LazyRandomDfAlgorithm = {}, e.expect, e.numIsZero); }(this, (function(e, t, n) { "use strict"; function dfIrwinHall(e, r = 1) { return t.expect(r).integer.gte(0), 0 === (r = n.fixZero(r)) ? () => 0 : () => { let t = r, n = 0; for (;t--; ) n += e.next(); return n; }; } function dfNormal(e, n = 0, r = 1) { return t.expect(n).number(), t.expect(r).number(), () => { let t, o, f; do { t = 2 * e.next() - 1, o = 2 * e.next() - 1, f = t * t + o * o; } while (!f || f > 1); return n + r * o * Math.sqrt(-2 * Math.log(f) / f); }; } e.dfBates = function dfBates(e, n = 1) { t.expect(n).integer.gt(0); const r = dfIrwinHall(e, n); return () => r() / n; }, e.dfBernoulli = function dfBernoulli(e, n = .5) { return t.expect(n).number.gte(0).lte(1), () => Math.floor(e.next() + n); }, e.dfBinomial = function dfBinomial(e, n = 1, r = .5) { return t.expect(n).integer.gt(0), t.expect(r).number.gte(0).lte(1), () => { let t = n, o = 0; for (;t--; ) e.next() < r && o++; return o; }; }, e.dfExponential = function dfExponential(e, n = 1) { return t.expect(n).number.gt(0), () => -Math.log(1 - e.next()) / n; }, e.dfGeometric = function dfGeometric(e, n = .5) { t.expect(n).number.gt(0).lte(1); const r = 1.0 / Math.log(1.0 - n); return () => Math.floor(1 + Math.log(e.next()) * r); }, e.dfIrwinHall = dfIrwinHall, e.dfLogNormal = function dfLogNormal(...e) { const t = dfNormal(...e); return () => Math.exp(t()); }, e.dfNormal = dfNormal, e.dfPareto = function dfPareto(e, n = 1) { t.expect(n).gt(0); const r = 1.0 / n; return () => 1.0 / Math.pow(1.0 - e.next(), r); }, Object.defineProperty(e, "__esModule", { value: !0 }); })); //# sourceMappingURL=index.umd.production.min.cjs.map