feat: add CLI random number generator supporting 6 distributions

This commit is contained in:
2026-06-12 14:14:31 +08:00
commit 2a17ca30cb
11 changed files with 634 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
export type Dist =
| "uniform"
| "normal"
| "binomial"
| "poisson"
| "exponential"
| "hypergeometric";
export const DISTS: Dist[] = [
"uniform",
"normal",
"binomial",
"poisson",
"exponential",
"hypergeometric",
];
export interface Options {
dist: Dist;
count: number;
decimals: number;
// uniform
min: number;
max: number;
// normal
mean: number;
stddev: number;
// binomial
trials: number;
prob: number;
// poisson
lambda: number;
// hypergeometric
popSize: number;
successes: number;
draws: number;
}
export function defaultOptions(dist: Dist): Options {
return {
dist,
count: 1,
decimals: 0,
min: 0,
max: 100,
mean: 0,
stddev: 1,
trials: 10,
prob: 0.5,
lambda: 1,
popSize: 100,
successes: 50,
draws: 10,
};
}