Discrete Distributions
UniDist.jl provides 19 discrete probability distributions. This page documents each distribution with its parameters, support, and usage examples.
Common Distributions
Bernoulli
Single trial with two outcomes (success/failure).
Bernoulli(p) # p = probability of successParameters:
p: Probability of success, 0 ≤ p ≤ 1
Support: {0, 1}
Example:
d = Bernoulli(0.7)
pdf(d, 1) # 0.7 (probability of success)
pdf(d, 0) # 0.3 (probability of failure)
cdf(d, 0) # 0.3
mean(d) # 0.7
var(d) # 0.21Use cases: Coin flips, yes/no outcomes, binary classification.
Binomial
Number of successes in n independent Bernoulli trials.
Binomial(n, p) # n = trials, p = success probabilityParameters:
n: Number of trials, n ≥ 0p: Probability of success, 0 ≤ p ≤ 1
Support: {0, 1, 2, ..., n}
Example:
d = Binomial(10, 0.5)
pdf(d, 5) # ≈ 0.246 (probability of exactly 5 successes)
cdf(d, 5) # ≈ 0.623 (probability of at most 5 successes)
mean(d) # 5.0
var(d) # 2.5Use cases: Quality control, survey sampling, A/B testing, clinical trials.
Poisson
Number of events in a fixed interval when events occur at constant rate.
Poisson(λ) # λ = rate (expected count)Parameters:
λ(lambda): Rate parameter, λ > 0
Support: {0, 1, 2, 3, ...}
Example:
d = Poisson(3.0)
pdf(d, 0) # ≈ 0.050 (P(X = 0))
pdf(d, 3) # ≈ 0.224 (P(X = 3))
cdf(d, 3) # ≈ 0.647
mean(d) # 3.0
var(d) # 3.0Use cases: Customer arrivals, website visits, defect counts, rare events.
Geometric
Number of failures before first success.
Geometric(p) # p = success probabilityParameters:
p: Probability of success, 0 < p ≤ 1
Support: {0, 1, 2, 3, ...}
Example:
d = Geometric(0.5)
pdf(d, 0) # 0.5 (success on first trial)
pdf(d, 1) # 0.25 (one failure, then success)
pdf(d, 2) # 0.125
mean(d) # 1.0 (expected failures before success)Use cases: Number of trials until success, waiting times, reliability testing.
DiscreteUniform
All integers in [a, b] equally likely.
DiscreteUniform(a, b) # a = min, b = maxParameters:
a: Minimum value (integer)b: Maximum value (integer), b ≥ a
Support: {a, a+1, ..., b}
Example:
d = DiscreteUniform(1, 6) # Fair die
pdf(d, 3) # ≈ 0.167
cdf(d, 3) # 0.5
mean(d) # 3.5Use cases: Dice rolls, random selection, lottery numbers.
Count Distributions
Pascal (Negative Binomial)
Number of failures before r successes.
Pascal(r, p) # r = successes needed, p = success probabilityParameters:
r: Number of successes required, r > 0p: Probability of success, 0 < p ≤ 1
Support: {0, 1, 2, 3, ...}
Example:
d = Pascal(3, 0.5)
pdf(d, 2) # Probability of 2 failures before 3 successes
mean(d) # r(1-p)/pUse cases: Overdispersed count data, number of trials until r successes.
GammaPoisson (Negative Binomial alternative parameterization)
Poisson distribution with Gamma-distributed rate.
GammaPoisson(r, p)Use cases: Modeling count data with overdispersion.
Hypergeometric
Sampling without replacement from a finite population.
Hypergeometric(N, K, n) # N = population, K = successes in population, n = drawsParameters:
N: Population sizeK: Number of success states in populationn: Number of draws
Support: {max(0, n+K-N), ..., min(n, K)}
Example:
# Drawing 5 cards, how many aces?
d = Hypergeometric(52, 4, 5)
pdf(d, 0) # Probability of no aces
pdf(d, 1) # Probability of exactly 1 ace
mean(d) # n * K / NUse cases: Quality sampling, card games, capture-recapture studies.
NegativeHypergeometric
NegativeHypergeometric(N, K, r)Special Distributions
BetaBinomial
Binomial with Beta-distributed success probability.
BetaBinomial(n, α, β) # n = trials, α, β = Beta parametersParameters:
n: Number of trialsα(alpha): Beta shape parameter, α > 0β(beta): Beta shape parameter, β > 0
Support: {0, 1, 2, ..., n}
Example:
d = BetaBinomial(10, 2, 3)
pdf(d, 5) # Probability of 5 successes
mean(d) # n * α / (α + β)Use cases: Overdispersed binomial data, Bayesian inference.
BetaPascal
Pascal distribution with Beta-distributed success probability.
BetaPascal(r, α, β)Polya (Beta-Binomial alternative)
Polya(n, α, β)Rank and Order Distributions
Benford
Distribution of first digits in many real-world datasets.
Benford()Support: {1, 2, 3, ..., 9}
Example:
d = Benford()
pdf(d, 1) # ≈ 0.301 (30.1% start with 1)
pdf(d, 9) # ≈ 0.046 (4.6% start with 9)Use cases: Fraud detection, data validation, forensic accounting.
Zipf
Power-law distribution for ranked data.
Zipf(s, N) # s = exponent, N = number of elementsParameters:
s: Exponent parameter, s > 0N: Number of elements
Support: {1, 2, 3, ..., N}
Example:
d = Zipf(1.0, 100)
pdf(d, 1) # Probability of rank 1
pdf(d, 2) # Probability of rank 2 (about half of rank 1)Use cases: Word frequencies, city populations, website popularity.
Zeta (Zipf with infinite support)
Zeta(s) # s = exponentParameters:
s: Exponent parameter, s > 1
Support: {1, 2, 3, ...}
Use cases: Power-law phenomena with unbounded support.
Logarithm (Logarithmic Series)
Logarithm(p) # p = parameterParameters:
p: Parameter, 0 < p < 1
Support: {1, 2, 3, ...}
Use cases: Species abundance, word frequency.
Other Discrete Distributions
DiscreteWeibull
Discrete analog of Weibull distribution.
DiscreteWeibull(q, β) # q = parameter, β = shapeSupport: {0, 1, 2, 3, ...}
Use cases: Discrete lifetime data, count-based reliability.
PowerSeries
General power series distribution.
PowerSeries(f, θ) # f = coefficient function, θ = parameterRectangular
Alias for DiscreteUniform.
Rectangular(a, b)Usage Examples
Comparing Distributions
using UniDist
# Compare Binomial approximation to Poisson
n, p = 100, 0.03
binomial = Binomial(n, p)
poisson = Poisson(n * p)
for k in 0:10
println("k=$k: Binomial=$(round(pdf(binomial, k), digits=4)), Poisson=$(round(pdf(poisson, k), digits=4))")
endCumulative Probabilities
d = Poisson(5.0)
# P(X ≤ 3)
cdf(d, 3)
# P(X > 3) = 1 - P(X ≤ 3)
1 - cdf(d, 3)
# P(2 ≤ X ≤ 5)
cdf(d, 5) - cdf(d, 1)Finding Quantiles
d = Binomial(20, 0.5)
# Find the 95th percentile
quantile(d, 0.95)
# Find the median
quantile(d, 0.5)