Statistical distributions are the foundation of realistic data generation. The SDK provides a comprehensive set of distributions to model various real-world scenarios.
Available Distributions
Normal Distribution
Bell curve distribution, perfect for natural phenomena like height, weight, or IQ.
const age = new NormalDistribution(35, 10);// mean: 35, stdDev: 10const sample = age.sample(); // e.g., 32.5
Uniform Distribution
Equal probability across a range, ideal for random selections within bounds.
const income = new UniformDistribution(40000, 120000);// min: 40k, max: 120kconst sample = income.sample(); // e.g., 75432
Categorical Distribution
Discrete values with probabilities, perfect for categories like occupation or status.
const occupation = new CategoricalDistribution([ { value: 'Engineer', probability: 0.4 }, { value: 'Designer', probability: 0.3 }, { value: 'Manager', probability: 0.3 }]);const sample = occupation.sample(); // e.g., 'Engineer'
Exponential Distribution
Time between events, like customer arrivals.
const waitTime = new ExponentialDistribution(0.5);// lambda: 0.5 (rate parameter)const sample = waitTime.sample(); // e.g., 1.38 minutes
Beta Distribution
Probabilities and percentages.
const successRate = new BetaDistribution(2, 5);// alpha: 2, beta: 5const sample = successRate.sample(); // e.g., 0.23 (23%)
Poisson Distribution
Count of events in fixed time.
const emailsPerHour = new PoissonDistribution(3);// lambda: 3 (average events per period)const sample = emailsPerHour.sample(); // e.g., 2 emails
Custom Distribution
Create your own distributions.
class TriangularDistribution extends BaseDistribution<number> { constructor(min: number, max: number, mode: number) { super(); this.min = min; this.max = max; this.mode = mode; }
sample(): number { // Implementation here const u = Math.random(); // ... triangular distribution logic return value; }}
const custom = new TriangularDistribution(0, 100, 75);const sample = custom.sample(); // e.g., 68.2