gleam_stats/distributions/binomial

Functions related to discrete binomial random variables.


Functions

pub fn binomial_cdf(x: Int, n: Int, p: Float) -> Result(
  Float,
  String,
)

Evaluate, at a certain point, the cumulative distribution function (cdf) of a discrete binomial distribution with parameters ‘n’ > 0 (number of trials) and ‘p’ in the interval [0, 1] (the success probability in each trial).

Example:
 import gleam_stats/distributions/binomial

 pub fn example() {
   let n: Float = 40.
   let p: Float = 0.5
   // For illustrational purposes, evaluate the cdf at the 
   // point -100.0
   binomial.binomial_cdf(-100.0, n, p) |> should.equal(0.0)
 }
pub fn binomial_mean(n: Int, p: Float) -> Result(Float, String)

Analytically compute the mean of a discrete binomial distribution with parameters ‘n’ > 0 (number of trials) and ‘p’ in the interval [0, 1] (the success probability in each trial).

pub fn binomial_pmf(x: Int, n: Int, p: Float) -> Result(
  Float,
  String,
)

Evaluate the probability mass function (pmf) of a discrete binomial distribution with parameters ‘n’ > 0 (number of trials) and ‘p’ in the interval [0, 1] (the success probability in each trial).

Example:
 import gleam_stats/distributions/binomial

 pub fn example() {
   let n: Float = 40.
   let p: Float = 0.5
   // For illustrational purposes, evaluate the pmf at the 
   // point -100.0
   binomial.binomial_pmf(-100.0, n, p) |> should.equal(0.0)
 }
pub fn binomial_random(stream: Iterator(Int), n: Int, p: Float, m: Int) -> Result(
  #(List(Int), Iterator(Int)),
  String,
)

Generate ‘m’ random numbers from a discrete binomial distribution with parameters ‘n’ > 0 (number of trials) and ‘p’ in the interval [0, 1] (the success probability in each trial).

The random numbers are generated using the inverse transform method.

Example:
 import gleam/iterator.{Iterator}
 import gleam_stats/generator
 import gleam_stats/distributions/binomial

 pub fn example() {
   let seed: Int = 5
   let seq: Int = 1
   let n: Float = 40.
   let p: Float = 0.5
   assert Ok(out) =
     generators.seed_pcg32(seed)
     |> binomial.binomial_random(n, p, 5_000)
   let rands: List(Float) = pair.first(out)
   let stream: Iterator(Int) = pair.second(out)
 }
pub fn binomial_variance(n: Int, p: Float) -> Result(
  Float,
  String,
)

Analytically compute the variance of a discrete binomial distribution with parameters ‘n’ > 0 (number of trials) and ‘p’ in the interval [0, 1] (the success probability in each trial).