Statistics · Mathematics
Heights, exam scores, measurement errors, IQ, shoe sizes, rainfall — almost every naturally occurring dataset organises itself into the same iconic shape. This guide explains why, what the bell curve tells you, and how to use it — with live demos, a z-score calculator, and Python code.
Contents
- What is a normal distribution?
- Why does nature produce bell curves?
- Interactive: coin flips become a bell curve
- Key properties of the normal distribution
- Interactive bell curve builder
- The 68-95-99.7 empirical rule
- Z-scores — standardising any normal distribution
- Interactive z-score calculator
- Real-world examples
- When data is NOT normally distributed
- Python code
- Knowledge quiz
Section 01
What is a Normal Distribution?
A normal distribution (also called a Gaussian distribution or bell curve) is a way that data arranges itself around a central value — with most values clustered near the middle, and fewer and fewer values appearing as you move toward the extremes.
Plot it on a graph and you get the unmistakable bell shape: perfectly symmetric, peaked in the centre, tapering off equally on both sides. The curve never actually touches the x-axis — it just gets infinitely close at the extremes.
📌 Definition
A normal distribution is fully described by just two numbers: the mean (μ) — where the centre of the bell sits — and the standard deviation (σ) — how wide or narrow the bell is. Change either one and you get a different bell curve.
Perfectly Symmetric
The left half is a mirror image of the right. The mean, median, and mode are all equal and sit at the exact centre.
Unimodal
There is only one peak — the most common value. Values become progressively rarer as you move away from the centre.
Asymptotic Tails
The curve approaches but never reaches zero. Extreme values are possible — just extraordinarily rare.
Total Area = 1
The area under the entire curve equals exactly 1 (or 100%). This lets us read off probabilities directly from areas.
Section 02
Why Does Nature Produce Bell Curves?
This is the deep question. Why should human heights, leaf sizes, or measurement errors all form a bell? The answer comes from one of the most powerful theorems in all of mathematics: the Central Limit Theorem.
The Central Limit Theorem says: whenever a quantity is the result of many small, independent, random influences added together — the result will be normally distributed, no matter what distribution each individual influence has.
🌿 Why height is normally distributed
Your height is influenced by hundreds of genetic variants, each adding or subtracting a tiny amount. Some push you taller, some shorter, most roughly cancel out. The sum of hundreds of tiny random effects → bell curve. The same logic applies to birth weight, exam scores, and manufacturing tolerances.
The logic in three steps
Many independent influences
The outcome is the sum (or average) of many separate random inputs. Human height has ~700 genetic variants each contributing a tiny effect.
Most cancel out
For every influence that pushes the result high, there’s usually one pushing it low. The middle outcome (where they mostly balance) is most common.
Extremes are rare combinations
Getting an extreme value requires almost all the influences to push the same direction simultaneously — increasingly unlikely the more extreme you go.
Section 03
Interactive: Coin Flips Become a Bell Curve
The clearest way to see the Central Limit Theorem is with coin flips. Flip a coin 10 times and count heads. Do it thousands of times. The histogram of “number of heads” will form a perfect bell curve.
Click Flip & Toss to simulate thousands of experiments. Watch the histogram grow into a bell shape before your eyes.
💡 What you are seeing
Each bar shows how many times that number of heads appeared. With few trials the bars are jagged and uneven. As you increase trials to 10,000 — the bars smooth into a near-perfect bell. This is the Central Limit Theorem in action.
Section 04
Key Properties of the Normal Distribution
The normal distribution has a precise mathematical formula, but you don’t need to memorise it — you need to understand what its two parameters mean.
📐 The Formula (for reference)
f(x) = (1 / σ√2π) × e−½((x−μ)/σ)²
where μ = mean, σ = standard deviation, e = Euler’s number ≈ 2.718
| Parameter | Symbol | Controls | Effect on curve |
|---|---|---|---|
| Mean | μ (mu) | Centre / location | Shifts the bell left or right without changing shape |
| Standard Deviation | σ (sigma) | Width / spread | Larger σ → flatter, wider bell. Smaller σ → taller, narrower bell |
| Variance | σ² | Spread (squared) | σ² = σ × σ. Often used in formulas; σ is easier to interpret |
⚠️ Mean = Median = Mode
In a perfect normal distribution, all three measures of central tendency are identical and sit at the peak of the bell. This is only true for symmetric distributions — skewed data breaks this equality.
Section 05
Interactive Bell Curve Builder
Drag the sliders to change the mean (μ) and standard deviation (σ). Watch how the bell curve shifts position and changes shape in real time.
Section 06
The 68-95-99.7 Empirical Rule
One of the most useful facts about the normal distribution is that fixed percentages of data always fall within 1, 2, and 3 standard deviations of the mean — regardless of what μ and σ actually are.
Worked Example — Adult Male Heights
Adult male heights in the UK are approximately normally distributed with μ = 175 cm and σ = 7 cm. Using the empirical rule:
| Range | Heights | % of men | Interpretation |
|---|---|---|---|
| μ ± 1σ | 168 cm – 182 cm | 68.27% | About 2 in 3 men |
| μ ± 2σ | 161 cm – 189 cm | 95.45% | About 19 in 20 men |
| μ ± 3σ | 154 cm – 196 cm | 99.73% | Nearly all men — only 1 in 370 outside this |
| Above 196 cm | >3σ above mean | 0.135% | Extremely rare (1 in 740 men) |
🏭 Six Sigma in Manufacturing
The famous “Six Sigma” quality standard means keeping defects within ±6 standard deviations — which means only 3.4 defects per million opportunities. This is why the empirical rule matters enormously in engineering and quality control.
Section 07
Z-Scores — Standardising Any Normal Distribution
A z-score tells you how many standard deviations a value is away from the mean. It lets you compare values from completely different normal distributions on the same scale.
What z-scores mean
| Z-Score | Meaning | Percentile (approx) |
|---|---|---|
| z = 0 | Exactly at the mean | 50th percentile |
| z = +1 | 1 std dev above mean | ~84th percentile |
| z = −1 | 1 std dev below mean | ~16th percentile |
| z = +2 | 2 std devs above mean | ~97.7th percentile |
| z = −2 | 2 std devs below mean | ~2.3rd percentile |
| z = +3 | 3 std devs above mean | ~99.9th percentile |
💡 Why z-scores are useful
A student scored 75 in Maths (μ=60, σ=10) and 82 in English (μ=75, σ=8).
Which was the better performance relative to classmates?
Maths z = (75−60)/10 = +1.5 |
English z = (82−75)/8 = +0.875
The Maths score was relatively better — despite being a lower raw mark.
Z-scores make this comparison possible.
Section 08
Interactive Z-Score Calculator
Enter any value, mean, and standard deviation to instantly calculate the z-score and see what percentile it corresponds to.
Section 09
Real-World Examples
The normal distribution appears across almost every domain of science, engineering, and everyday life.
Human Heights
Adult heights within a gender and population are normally distributed. UK men: μ=175cm, σ=7cm. The tallest 2.5% are above ~189cm.
Exam Scores
When a test is well-designed, scores form a bell curve. Many standardised tests (SAT, IQ tests) are deliberately calibrated to produce μ=100, σ=15.
Manufacturing
A machine making bolts produces diameters that scatter around the target in a bell. Quality control uses σ to decide how many are defective.
Stock Returns
Daily returns on a diversified index approximate a normal distribution. Risk models use σ (volatility) to estimate the probability of large losses.
Rainfall & Temperature
Monthly average temperatures at a location over many years form a bell. Climate scientists use deviations from the mean to measure unusual weather.
Medical Measurements
Blood pressure, cholesterol, birth weight — most biological measurements are normally distributed. “Normal range” usually means within ±2σ of the mean.
Section 10
When Data is NOT Normally Distributed
Not everything is a bell curve. Recognising when data isn’t normal is just as important as knowing when it is.
| Distribution | Example | Shape |
|---|---|---|
| Right-skewed | Income, house prices, city populations | Long tail to the right. Most people earn little; a few earn millions. |
| Left-skewed | Age at retirement, scores on an easy test | Long tail to the left. Most values are high, few are very low. |
| Bimodal | Height of mixed male/female population | Two peaks — mixing two separate normal distributions. |
| Uniform | Rolling a die, random number generators | Flat — every value equally likely, no central peak. |
| Exponential | Time between customer arrivals, time to equipment failure | Drops steeply from zero — short times are far more common. |
| Power law | Social media followers, earthquake magnitudes | Extremely heavy tail. A tiny number dominate. |
⚠️ Always check before assuming normality
Many statistical tests assume your data is normal. Using them on skewed data gives misleading results. Always plot your data first (histogram or Q-Q plot) and run a normality test like Shapiro-Wilk before applying normal-distribution methods.
Section 11
Python Code
Plotting a bell curve
import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm mu, sigma = 175, 7 # UK male heights: mean=175cm, std=7cm x = np.linspace(mu - 4*sigma, mu + 4*sigma, 300) y = norm.pdf(x, mu, sigma) plt.figure(figsize=(10, 5)) plt.plot(x, y, color='#6366f1', linewidth=2.5) # Shade the 1σ, 2σ, 3σ regions for n, color, label in [(1,'#10b981','68%'),(2,'#f59e0b','95%'),(3,'#ef4444','99.7%')]: mask = (x >= mu - n*sigma) & (x <= mu + n*sigma) plt.fill_between(x, y, where=mask, alpha=0.2, color=color, label=f'{label} within {n}σ') plt.title('Normal Distribution of UK Male Heights') plt.xlabel('Height (cm)') plt.ylabel('Probability Density') plt.legend() plt.tight_layout() plt.show()
Z-scores and probabilities
from scipy.stats import norm mu, sigma = 175, 7 x = 185 # Z-score z = (x - mu) / sigma print(f"Z-score: {z:.2f}") # → 1.43 # Probability of being BELOW this height p_below = norm.cdf(x, mu, sigma) print(f"P(height < 185): {p_below:.1%}") # → 92.4% # Probability of being ABOVE this height p_above = 1 - p_below print(f"P(height > 185): {p_above:.1%}") # → 7.6% # Probability of being BETWEEN two values p_between = norm.cdf(182, mu, sigma) - norm.cdf(168, mu, sigma) print(f"P(168 < height < 182): {p_between:.1%}") # → 68.3% # What height is at the 90th percentile? p90 = norm.ppf(0.90, mu, sigma) print(f"90th percentile height: {p90:.1f} cm") # → 184.0 cm
Testing if data is normally distributed
from scipy.stats import shapiro, normaltest import numpy as np data = np.random.normal(loc=175, scale=7, size=100) # Shapiro-Wilk test (best for n < 5000) stat, p = shapiro(data) print(f"Shapiro-Wilk: stat={stat:.3f}, p={p:.3f}") # If p > 0.05 → fail to reject normality (data is likely normal) # D'Agostino K² test stat2, p2 = normaltest(data) print(f"Normaltest: stat={stat2:.3f}, p={p2:.3f}") # Quick visual check import scipy.stats as stats import matplotlib.pyplot as plt stats.probplot(data, dist="norm", plot=plt) plt.title("Q-Q Plot — points on the line = normal") plt.show()
Section 12
Knowledge Quiz
Six questions to test your understanding of the normal distribution.
