Common Probability Distributions
Shapes that real data falls into
Bernoulli/Binomial, Poisson, Uniform, Normal and Exponential are the workhorses: they model conversions, counts over time, noise, rates and wait times — and they determine which statistical tests are valid.
What you will learn
- Match business situations to distribution families
- Interpret each distribution's parameters
- Recognize that test choice depends on distribution assumptions
What is this?
A distribution is a rule assigning probability to every outcome of a random variable. Discrete families (Bernoulli: one yes/no; Binomial: k successes in n trials; Poisson: events per interval) model counts. Continuous families (Uniform: equal everywhere; Normal: the bell curve; Exponential: waiting times) model measurements. Choosing the right family changes every downstream statistical decision.
Why do you need it?
- Conversion rate = a Bernoulli/Binomial process; test statistics assume its variance.
- Support-ticket arrivals and ad clicks are Poisson counts.
- Service latency and customer wait times are typically Exponential or right-skewed.
- The Normal appears in error terms and via the CLT, anchoring most parametric tests.
Mental model
A toolkit with one tool per joint type
Distribution families per data situation
You wouldn't use a flathead screwdriver on a hex bolt; you wouldn't fit a Normal to customer wait times. Match the family to the mechanism that produced the data.
How it works
- Bernoulli(p): 1 with probability p, 0 otherwise — one coin flip of a biased coin.
- Binomial(n, p): sum of n independent Bernoulli draws in the same p — k successes.
- Poisson(λ): counts of events in a fixed window when rate is λ and events are independent.
- Uniform(a, b): every value in [a, b] equally likely — the 'no information' prior.
- Normal(μ, σ): symmetric bell — the additive-noise distribution and CLT limit.
- Exponential(λ): time until the next Poisson event — memoryless waiting time.
Picking a family by question type.
Examples
Sample from distributions with numpy
import numpy as nprng = np.random.default_rng(7)print(rng.binomial(n=100, p=0.3, size=5)) # successes out of 100 trialsprint(rng.poisson(lam=4, size=5)) # events per day, mean 4print(rng.normal(loc=0, scale=1, size=5)) # standard normal drawsprint(rng.exponential(scale=2, size=5)) # wait times, mean 2One generator, four families. Binomial spreads around 30, Poisson around 4, Normal around 0 with std 1, Exponential with mean 2 but a long right tail — all visible in the printed samples.
In production
- A growth team models conversion as Binomial and chooses a chi-square test accordingly.
- An SRE team fits Poisson to alert counts and sets a p95 anticipile alert when arrivals exceed a threshold.
- A latency team logs Exponential-like wait times, so they report percentiles rather than mean ± std.
Best practices
- Pick the family from the data's generating mechanism, not from convenience.
- Verify fit with a Q-Q plot or chi-square goodness-of-fit before assuming.
- Poisson for counts, Normal for symmetrized measurements, Exponential for waits.
Common mistakes
- Forcing Normal on right-skewed counts and running tests that require symmetry.
- Using Binomial variance on Poisson data (variance = mean for Poisson).
- Assuming the process is memoryless just because you picked Exponential.
Debugging tips
- For count data, check var ≈ mean to justify Poisson; if var >> mean, you have over-dispersion.
- Make a quick histogram and compare against the family's shape before running tests.
- When a 'Normal-looking' histogram has a long tail, try log or Box-Cox and re-check.
Interview checkpoint
Quick quiz
You count support tickets landing each hour. Which family fits?
The Expoential distribution is a good model for 'time until the next event' in a Poisson process.