Skip to content

Distributions (normal, binomial, Poisson)

Why distributions matter

Distributions model uncertainty and randomness.

  • Normal: measurement noise, averages
  • Binomial: number of successes in N trials (conversions)
  • Poisson: counts over time/space (arrivals, events)

Normal distribution

  • Parameters: mean (\mu), std (\sigma)
  • Symmetric bell curve
Normal samples
import numpy as np
 
x = np.random.normal(loc=0, scale=1, size=10_000)
print(x.mean(), x.std())
Normal samples
import numpy as np
 
x = np.random.normal(loc=0, scale=1, size=10_000)
print(x.mean(), x.std())

Binomial distribution

  • Parameters: trials (n), success prob (p)
  • Example: 100 visitors, conversion probability 0.03
Binomial samples
import numpy as np
 
samples = np.random.binomial(n=100, p=0.03, size=10_000)
print(samples.mean())
Binomial samples
import numpy as np
 
samples = np.random.binomial(n=100, p=0.03, size=10_000)
print(samples.mean())

Poisson distribution

  • Parameter: rate (\lambda)
  • Example: number of support tickets per hour
Poisson samples
import numpy as np
 
samples = np.random.poisson(lam=5, size=10_000)
print(samples.mean())
Poisson samples
import numpy as np
 
samples = np.random.poisson(lam=5, size=10_000)
print(samples.mean())

Practical tip

When unsure:

  • Plot a histogram of your data.
  • Start with simple candidates (normal vs count distributions).
  • Check mean/variance: for Poisson, mean ≈ variance.

If this helped you, consider buying me a coffee ☕

Buy me a coffee

Was this page helpful?

Let us know how we did