UNPKG

@thi.ng/random

Version:

Pseudo-random number generators w/ unified API, distributions, weighted choices, ID generation

33 lines (32 loc) 697 B
const INV_MAX = 1 / 2 ** 32; class ARandom { float(norm = 1) { return this.int() * INV_MAX * norm; } probability(p) { return this.float() < p; } norm(norm = 1) { return (this.int() * INV_MAX - 0.5) * 2 * norm; } normMinMax(min, max) { const x = this.minmax(min, max); return this.float() < 0.5 ? x : -x; } minmax(min, max) { return this.float() * (max - min) + min; } minmaxInt(min, max) { min |= 0; const range = (max | 0) - min; return range ? min + this.int() % range : min; } minmaxUint(min, max) { min >>>= 0; const range = (max >>> 0) - min; return range ? min + this.int() % range : min; } } export { ARandom };