Distributions
Imports
open Array;
open Math;
open Random;
open Statistics;
Types
Functions
def sample_next (d: SampleDraw) : Rng
def normal_sample (g: Rng) (mu: Float) (sigma: {s : Float | s > 0.0}) (n: {m : Int | m > 0}) : SampleDraw
def normal_value (mu: Float) (sigma: {s : Float | s > 0.0}) (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && (fracBelow xs (mu + 2.33 * sigma) ≥ 0.99 && (fracBelow xs (mu + 1.645 * sigma) ≥ 0.95 && (fracBelow xs (mu + 1.282 * sigma) ≥ 0.9 && (fracBelow xs mu ≥ 0.5 && (fracAbove xs (mu - 1.282 * sigma) ≥ 0.9 && (fracAbove xs (mu - 1.645 * sigma) ≥ 0.95 && fracAbove xs (mu - 2.33 * sigma) ≥ 0.99))))))}
def standard_normal_sample (g: Rng) (n: {m : Int | m > 0}) : SampleDraw
def standard_normal_value (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && (fracBelow xs 2.33 ≥ 0.99 && (fracBelow xs 1.645 ≥ 0.95 && (fracBelow xs 1.282 ≥ 0.9 && (fracBelow xs 0.0 ≥ 0.5 && (fracAbove xs 0.0 ≥ 0.5 && (fracAbove xs (0.0 - 1.282) ≥ 0.9 && fracAbove xs (0.0 - 2.33) ≥ 0.99))))))}
def exponential_sample (g: Rng) (lam: {l : Float | l > 0.0}) (n: {m : Int | m > 0}) : SampleDraw
def exponential_value (lam: {l : Float | l > 0.0}) (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && (fracAbove xs 0.0 ≥ 1.0 && (fracBelow xs (4.6052 / lam) ≥ 0.99 && (fracBelow xs (2.9957 / lam) ≥ 0.95 && (fracBelow xs (2.3026 / lam) ≥ 0.9 && fracBelow xs (0.6931 / lam) ≥ 0.5))))}
def beta_sample (g: Rng) (alpha: {a : Float | a > 0.0}) (beta: {b : Float | b > 0.0}) (n: {m : Int | m > 0}) : SampleDraw
def beta_value (alpha: {a : Float | a > 0.0}) (beta: {b : Float | b > 0.0}) (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && (fracAbove xs 0.0 ≥ 1.0 && (fracBelow xs 1.0 ≥ 1.0 && sampleMean xs = alpha / (alpha + beta)))}
def gamma_sample (g: Rng) (k: {kk : Float | kk > 0.0}) (theta: {th : Float | th > 0.0}) (n: {m : Int | m > 0}) : SampleDraw
def gamma_value (k: {kk : Float | kk > 0.0}) (theta: {th : Float | th > 0.0}) (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && (fracAbove xs 0.0 ≥ 1.0 && (sampleMean xs = k * theta && sampleVar xs = k * (theta * theta)))}
def chi_squared_sample (g: Rng) (k: {kk : Int | kk > 0}) (n: {m : Int | m > 0}) : SampleDraw
def chi_squared_value (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && fracAbove xs 0.0 ≥ 1.0}
def bernoulli_sample (g: Rng) (p: {pp : Float | pp ≥ 0.0 && pp ≤ 1.0}) (n: {m : Int | m > 0}) : SampleDraw
def bernoulli_value (p: {pp : Float | pp ≥ 0.0 && pp ≤ 1.0}) (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && (fracBelow xs 0.5 ≥ 1.0 - p && (fracAbove xs 0.5 ≥ p && (fracBelow xs 1.5 ≥ 1.0 && fracAbove xs (0.0 - 0.5) ≥ 1.0)))}
def binomial_sample (g: Rng) (trials: {t : Int | t > 0}) (p: {pp : Float | pp ≥ 0.0 && pp ≤ 1.0}) (n: {m : Int | m > 0}) : SampleDraw
def binomial_value (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && fracAbove xs (0.0 - 0.5) ≥ 1.0}
def poisson_sample (g: Rng) (lam: {l : Float | l > 0.0}) (n: {m : Int | m > 0}) : SampleDraw
def poisson_value (lam: {l : Float | l > 0.0}) (d: SampleDraw) : {xs : Array Float | Array.size xs > 0 && (fracAbove xs (0.0 - 0.5) ≥ 1.0 && sampleMean xs = lam)}