Statistics courseLesson 2 of 4
Statistics course · Lesson 2 of 4
Probability Distributions and the Central Limit Theorem
Common probability distributions and the central limit theorem explained simply, with a Python simulation showing why sample means become bell-shaped.
On this page
A probability distribution describes how likely each possible value is. Knowing a few common distributions helps you choose the right test and spot when data looks wrong. And one result, the central limit theorem, explains why so many statistical methods work on messy real-world data.
Distributions you will meet
| Distribution | What it describes | Example |
|---|---|---|
| Normal | Symmetric, bell-shaped values around a mean | Measurement errors, heights |
| Binomial | The number of successes in a fixed number of yes/no trials | Conversions out of 1,000 visitors |
| Poisson | The number of events in a fixed time or space | Support tickets per hour |
| Exponential | The waiting time between random events | Time between orders, session lengths |
| Log-normal | Positive values with a long right tail | Order values, incomes |
Much business data is skewed, not normal. Plot it before assuming anything.
The central limit theorem
The central limit theorem (CLT) says: if you take many random samples of a reasonable size and calculate each sample’s mean, those means are approximately normally distributed around the true mean, even when the original data is not normal. The spread of the sample means also shrinks as samples get larger, in proportion to one over the square root of the sample size.
This simulation starts from a strongly skewed population (time spent on a website) and looks at the means of many samples:
import numpy as np
from scipy.stats import skew
rng = np.random.default_rng(11)
# A skewed population: minutes customers spend on a site. Most visits are short, a few are very long.
population = rng.exponential(scale=4.0, size=1_000_000)
print(f"population: mean {population.mean():.2f}, median {np.median(population):.2f}, skewness {skew(population):.2f}")
for n in (2, 30, 200):
means = rng.choice(population, size=(10_000, n)).mean(axis=1) # 10,000 samples of size n
print(f"sample size {n:3}: mean of sample means {means.mean():.2f}, "
f"spread (std) {means.std():.3f}, skewness {skew(means):.2f}")
print("a normal distribution has skewness 0")
population: mean 4.00, median 2.78, skewness 1.99
sample size 2: mean of sample means 4.00, spread (std) 2.818, skewness 1.42
sample size 30: mean of sample means 4.01, spread (std) 0.722, skewness 0.39
sample size 200: mean of sample means 4.01, spread (std) 0.286, skewness 0.13
a normal distribution has skewness 0
Three things to notice:
- The average of the sample means stays at about 4.00, the true mean, at every sample size.
- The spread shrinks as samples grow: averages of larger samples are more precise.
- The skewness falls towards 0: averages of larger samples become more bell-shaped, even though the population is very skewed.
Why it matters
Because sample means are close to normal, you can use normal-based tools, such as confidence intervals and t-tests, to compare averages of skewed data, such as revenue per user in an A/B test. That is the foundation of the next two lessons.
When it helps less
- Small samples from very skewed data: the means are still skewed (see sample size 2 above).
- Heavy tails, such as a few customers with enormous spend: you may need much larger samples, or methods less sensitive to extremes, such as medians or trimmed means.
- Dependent data, such as repeated measurements of the same user: the theorem assumes independent observations.
Common mistakes
- Saying the CLT makes the data normal. It makes the distribution of sample means approximately normal, not the data.
- Assuming 30 is always enough. It is a rough rule; very skewed data needs more.
- Ignoring dependence between observations.
Key takeaway
Know the common distributions so you recognise your data’s shape. The central limit theorem says averages of independent samples become approximately normal, with less spread as samples grow, which is why tests on averages work. Next: hypothesis testing and p-values.
Progress is saved in this browser only. No account needed.

