Visualize.Random (Visualize v0.2.25)

Copy Markdown View Source

Random number generators for various probability distributions.

Useful for generating synthetic data, jittering points, and Monte Carlo simulations.

Examples

# Uniform random in range [0, 100]
Visualize.Random.uniform(0, 100)

# Normal distribution with mean=50, stddev=10
Visualize.Random.normal(50, 10)

# Generate multiple samples
Visualize.Random.samples(&Visualize.Random.normal(0, 1), 100)

Summary

Functions

Returns a random number from a Bernoulli distribution.

Returns a random number from a beta distribution.

Returns a random integer from a binomial distribution.

Returns a random number from a Cauchy distribution.

Returns a random number from an exponential distribution.

Returns a random number from a gamma distribution.

Returns a random integer from a geometric distribution.

Returns a random point uniformly distributed in a circle.

Returns a random point uniformly distributed in a rectangle.

Returns a random number from a log-normal distribution.

Returns a random number from a normal (Gaussian) distribution.

Returns a random point uniformly distributed on a circle's edge.

Returns a random number from a Pareto distribution.

Picks a single random element from a list.

Returns a random integer from a Poisson distribution.

Picks n random elements from a list.

Generates n samples using the given random function.

Seeds the random number generator for reproducibility.

Shuffles a list randomly (Fisher-Yates shuffle).

Returns a random number uniformly distributed in [min, max).

Returns a random integer uniformly distributed in [min, max].

Returns a random number from a Weibull distribution.

Functions

bernoulli(p \\ 0.5)

@spec bernoulli(number()) :: 0 | 1

Returns a random number from a Bernoulli distribution.

Returns 1 with probability p, 0 otherwise.

beta(alpha, beta)

@spec beta(number(), number()) :: float()

Returns a random number from a beta distribution.

Useful for modeling proportions and probabilities.

binomial(n, p)

@spec binomial(non_neg_integer(), number()) :: non_neg_integer()

Returns a random integer from a binomial distribution.

Number of successes in n Bernoulli trials with probability p.

cauchy(location \\ 0, scale \\ 1)

@spec cauchy(number(), number()) :: float()

Returns a random number from a Cauchy distribution.

A heavy-tailed distribution (undefined mean/variance).

exponential(lambda \\ 1)

@spec exponential(number()) :: float()

Returns a random number from an exponential distribution.

Models time between events in a Poisson process.

gamma(shape, scale \\ 1)

@spec gamma(number(), number()) :: float()

Returns a random number from a gamma distribution.

Uses the Marsaglia and Tsang method.

geometric(p)

@spec geometric(number()) :: non_neg_integer()

Returns a random integer from a geometric distribution.

Number of failures before the first success.

in_circle(cx \\ 0, cy \\ 0, radius \\ 1)

@spec in_circle(number(), number(), number()) :: {float(), float()}

Returns a random point uniformly distributed in a circle.

in_rect(x0, y0, x1, y1)

@spec in_rect(number(), number(), number(), number()) :: {float(), float()}

Returns a random point uniformly distributed in a rectangle.

log_normal(mu \\ 0, sigma \\ 1)

@spec log_normal(number(), number()) :: float()

Returns a random number from a log-normal distribution.

If X is normal(mu, sigma), then exp(X) is log-normal.

normal(mean \\ 0, stddev \\ 1)

@spec normal(number(), number()) :: float()

Returns a random number from a normal (Gaussian) distribution.

Uses the Box-Muller transform.

on_circle(cx \\ 0, cy \\ 0, radius \\ 1)

@spec on_circle(number(), number(), number()) :: {float(), float()}

Returns a random point uniformly distributed on a circle's edge.

pareto(alpha \\ 1)

@spec pareto(number()) :: float()

Returns a random number from a Pareto distribution.

Models power law phenomena (wealth distribution, etc.)

pick(list)

@spec pick([any()]) :: any()

Picks a single random element from a list.

poisson(lambda)

@spec poisson(number()) :: non_neg_integer()

Returns a random integer from a Poisson distribution.

Models the number of events in a fixed interval.

sample(list, n)

@spec sample([any()], non_neg_integer()) :: [any()]

Picks n random elements from a list.

samples(random_fn, n)

@spec samples((-> number()), non_neg_integer()) :: [number()]

Generates n samples using the given random function.

Example

samples = Visualize.Random.samples(fn -> Visualize.Random.normal(0, 1) end, 100)

seed(s)

@spec seed(integer()) :: :rand.state()

Seeds the random number generator for reproducibility.

shuffle(list)

@spec shuffle([any()]) :: [any()]

Shuffles a list randomly (Fisher-Yates shuffle).

uniform(min \\ 0, max \\ 1)

@spec uniform(number(), number()) :: float()

Returns a random number uniformly distributed in [min, max).

uniform_int(min, max)

@spec uniform_int(integer(), integer()) :: integer()

Returns a random integer uniformly distributed in [min, max].

weibull(shape, scale \\ 1)

@spec weibull(number(), number()) :: float()

Returns a random number from a Weibull distribution.

Used in reliability engineering and survival analysis.