TypeScript
Install from npm:
npm i pragmastat@12.0.1
Source code: https://github.com/AndreyAkinshin/pragmastat/tree/v12.0.1/ts
Pragmastat on npm: https://www.npmjs.com/package/pragmastat
Demo:
import {
center,
spread,
shift,
ratio,
disparity,
centerBounds,
shiftBounds,
ratioBounds,
spreadBounds,
disparityBounds,
Rng,
Additive,
Multiplic,
Exp,
Power,
Uniform,
Sample,
} from '..';
function main(): void {
// --- One-Sample ---
let sx = Sample.of(Array.from({ length: 200 }, (_, i) => i + 1));
console.log(center(sx).value); // 100.5
console.log(centerBounds(sx, 1e-3)); // { lower: 86, upper: 115, unit: ... }
console.log(spread(sx).value); // 59
console.log(spreadBounds(sx, 1e-3, 'demo')); // { lower: 44, upper: 87, unit: ... }
// --- Two-Sample ---
sx = Sample.of(Array.from({ length: 200 }, (_, i) => i + 1));
const sy = Sample.of(Array.from({ length: 200 }, (_, i) => i + 101));
console.log(shift(sx, sy).value); // -100
console.log(shiftBounds(sx, sy, 1e-3)); // { lower: -120, upper: -80, unit: ... }
console.log(ratio(sx, sy).value); // 0.5008354224706336
console.log(ratioBounds(sx, sy, 1e-3)); // { lower: 0.4066..., upper: 0.5958..., unit: ... }
console.log(disparity(sx, sy).value); // -1.694915254237288
console.log(disparityBounds(sx, sy, 1e-3, 'demo')); // { lower: -3.1025..., upper: -0.8494..., unit: ... }
// --- Randomization ---
let rng = new Rng('demo-uniform');
console.log(rng.uniformFloat()); // 0.2640554428629759
console.log(rng.uniformFloat()); // 0.9348534835582796
rng = new Rng('demo-uniform-int');
console.log(rng.uniformInt(0, 100)); // 41
rng = new Rng('demo-sample');
console.log(JSON.stringify(rng.sample([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 3))); // [3,8,9]
rng = new Rng('demo-resample');
console.log(JSON.stringify(rng.resample([1, 2, 3, 4, 5], 7))); // [3,1,3,2,4,1,2]
rng = new Rng('demo-shuffle');
console.log(JSON.stringify(rng.shuffle([1, 2, 3, 4, 5]))); // [4,2,3,5,1]
// --- Distributions ---
rng = new Rng('demo-dist-additive');
console.log(new Additive(0, 1).sample(rng)); // 0.17410448679568188
rng = new Rng('demo-dist-multiplic');
console.log(new Multiplic(0, 1).sample(rng)); // 1.1273244602673853
rng = new Rng('demo-dist-exp');
console.log(new Exp(1).sample(rng)); // 0.6589065267276553
rng = new Rng('demo-dist-power');
console.log(new Power(1, 2).sample(rng)); // 1.023677535537084
rng = new Rng('demo-dist-uniform');
console.log(new Uniform(0, 10).sample(rng)); // 6.54043657816832
}
main();