@types/d3-random
Version:
TypeScript definitions for d3-random
313 lines (276 loc) • 11.6 kB
TypeScript
// Last module patch version validated against: 3.0.1
export interface RandomNumberGenerationSource {
/**
* Returns the same type of function for generating random numbers but where the given random number
* generator source is used as the source of randomness instead of Math.random.
* This is useful when a seeded random number generator is preferable to Math.random.
*
* @param source Source (pseudo-)random number generator implementing the Math.random interface.
* The given random number generator must implement the same interface as Math.random and
* only return values in the range [0, 1).
*/
source(source: () => number): this;
}
/**
* A configurable random number generator for the uniform distribution.
*/
export interface RandomUniform extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a uniform distribution.
* The minimum allowed value of a returned number is min (inclusive), and the maximum is max (exclusive).
* Min defaults to 0; if max is not specified, it defaults to 1.
*
* @param max The maximum allowed value of a returned number, defaults to 1.
*/
(max?: number): () => number;
/**
* Returns a function for generating random numbers with a uniform distribution.
* The minimum allowed value of a returned number is min (inclusive), and the maximum is max (exclusive).
*
* @param min The minimum allowed value of a returned number.
* @param max The maximum allowed value of a returned number.
*/
// tslint:disable-next-line:unified-signatures
(min: number, max: number): () => number;
}
export const randomUniform: RandomUniform;
/**
* A configurable random integer generator for the uniform distribution.
*/
export interface RandomInt extends RandomNumberGenerationSource {
/**
* Returns a function for generating random integers with a uniform distribution.
* The minimum allowed value of a returned number is ⌊min⌋ (inclusive), and the maximum is ⌊max - 1⌋ (inclusive)
* Min defaults to 0.
*
* @param max The maximum allowed value of a returned number.
*/
(max: number): () => number;
/**
* Returns a function for generating random integers with a uniform distribution.
* The minimum allowed value of a returned number is ⌊min⌋ (inclusive), and the maximum is ⌊max - 1⌋ (inclusive)
*
* @param min The minimum allowed value of a returned number.
* @param max The maximum allowed value of a returned number.
*/
// tslint:disable-next-line:unified-signatures
(min: number, max: number): () => number;
}
export const randomInt: RandomInt;
/**
* A configurable random number generator for the normal (Gaussian) distribution.
*/
export interface RandomNormal extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a normal (Gaussian) distribution.
* The expected value of the generated numbers is mu, with the given standard deviation sigma.
* If mu is not specified, it defaults to 0; if sigma is not specified, it defaults to 1.
*
* @param mu Expected value, defaults to 0.
* @param sigma Standard deviation, defaults to 1.
*/
(mu?: number, sigma?: number): () => number;
}
export const randomNormal: RandomNormal;
/**
* A configurable random number generator for the log-normal distribution.
*/
export interface RandomLogNormal extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a log-normal distribution. The expected value of the random variable’s natural logarithm is mu,
* with the given standard deviation sigma. If mu is not specified, it defaults to 0; if sigma is not specified, it defaults to 1.
*
* @param mu Expected value, defaults to 0.
* @param sigma Standard deviation, defaults to 1.
*/
(mu?: number, sigma?: number): () => number;
}
export const randomLogNormal: RandomLogNormal;
/**
* A configurable random number generator for the Bates distribution.
*/
export interface RandomBates extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a Bates distribution with n independent variables.
* The case of fractional n is handled as with d3.randomIrwinHall, and d3.randomBates(0) is equivalent to d3.randomUniform().
*
* @param n Number of independent random variables to use.
*/
(n: number): () => number;
}
export const randomBates: RandomBates;
/**
* A configurable random number generator for the Irwin–Hall distribution.
*/
export interface RandomIrwinHall extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with an Irwin–Hall distribution with n independent variables.
* If the fractional part of n is non-zero, this is treated as adding d3.randomUniform() times that fractional part to the integral part.
*
* @param n Number of independent random variables to use.
*/
(n: number): () => number;
}
export const randomIrwinHall: RandomIrwinHall;
/**
* A configurable random number generator for the exponential distribution.
*/
export interface RandomExponential extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with an exponential distribution with the rate lambda;
* equivalent to time between events in a Poisson process with a mean of 1 / lambda.
*
* @param lambda Expected time between events.
*/
(lambda: number): () => number;
}
export const randomExponential: RandomExponential;
/**
* A configurable random number generator with an Pareto distribution.
*/
export interface RandomPareto extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a Pareto distribution with the shape alpha.
* The value alpha must be a positive value.
*
* @param alpha alpha
*/
(alpha: number): () => number;
}
export const randomPareto: RandomPareto;
/**
* A configurable random 0 or 1 generator according to a Bernoulli distribution.
*/
export interface RandomBernoulli extends RandomNumberGenerationSource {
/**
* Returns a function for generating either 1 or 0 according to a Bernoulli distribution with 1 being returned with success probability p and 0 with failure probability q = 1 - p.
* The value p is in the range [0, 1].
*
* @param p p
*/
(p: number): () => number;
}
export const randomBernoulli: RandomBernoulli;
/**
* A configurable random number generator with a geometric distribution.
*/
export interface RandomGeometric extends RandomNumberGenerationSource {
/**
* Returns a function for generating numbers with a geometric distribution with success probability p.
* The value p is in the range [0, 1].
*
* @param p Success probability
*/
(p: number): () => number;
}
export const randomGeometric: RandomGeometric;
/**
* A configurable random number generator with a binomial distribution.
*/
export interface RandomBinomial extends RandomNumberGenerationSource {
/**
* Returns a function for generating numbers with a geometric distribution with success probability p.
* The value p is in the range (0, 1].
*
* @param p Success probability
*/
(p: number): () => number;
}
export const randomBinomial: RandomBinomial;
/**
* A configurable random number generator with a gamma distribution.
*/
export interface RandomGamma extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a gamma distribution with k the shape parameter and theta the scale parameter.
* The value k must be a positive value; if theta is not specified, it defaults to 1.
*
* @param k Shape parameter
* @param theta Scale paramter
*/
(k: number, theta?: number): () => number;
}
export const randomGamma: RandomGamma;
/**
* A configurable random number generator with a beta distribution.
*/
export interface RandomBeta extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a beta distribution with alpha and beta shape parameters, which must both be positive.
*
* @param alpha Shape parameter
* @param beta Shape paramter
*/
(alpha: number, beta: number): () => number;
}
export const randomBeta: RandomBeta;
/**
* A configurable random number generator with one of the generalized extreme value distributions.
*/
export interface RandomWeibull extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with one of the generalized extreme value distributions, depending on k:
* If k is positive, the Weibull distribution with shape parameter k
* If k is zero, the Gumbel distribution
* If k is negative, the Fréchet distribution with shape parameter −k
* In all three cases, a is the location parameter and b is the scale parameter.
* If a is not specified, it defaults to 0; if b is not specified, it defaults to 1.
*
* @param k Shape parameter
* @param a Location parameter
* @param b Scale parameter
*/
(k: number, a?: number, b?: number): () => number;
}
export const randomWeibull: RandomWeibull;
/**
* A configurable random number generator with a Cauchy distribution.
*/
export interface RandomCauchy extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a Cauchy distribution.
* a and b have the same meanings and default values as in d3.randomWeibull.
*
* @param a Location parameter
* @param b Scale parameter
*/
(a?: number, b?: number): () => number;
}
export const randomCauchy: RandomCauchy;
/**
* A configurable random number generator with a logistic distribution.
*/
export interface RandomLogistic extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a logistic distribution.
* a and b have the same meanings and default values as in d3.randomWeibull.
*
* @param a Location parameter
* @param b Scale parameter
*/
(a?: number, b?: number): () => number;
}
export const randomLogistic: RandomLogistic;
/**
* A configurable random number generator with a Poisson distribution.
*/
export interface RandomPoisson extends RandomNumberGenerationSource {
/**
* Returns a function for generating random numbers with a Poisson distribution with mean lambda.
*
* @param lambda Mean
*/
(lambda: number): () => number;
}
export const randomPoisson: RandomPoisson;
/**
* Returns a linear congruential generator;
* this function can be called repeatedly to obtain pseudorandom values well-distributed on the interval [0,1) and with a long period (up to 1 billion numbers), similar to Math.random.
* A seed can be specified as a real number in the interval [0,1) or as any integer.
* In the latter case, only the lower 32 bits are considered.
* Two generators instanced with the same seed generate the same sequence, allowing to create reproducible pseudo-random experiments.
* If the seed is not specified, one is chosen using Math.random.
*
* @param seed A seed that is either a real number in the interval [0,1) or any integer.
*/
export function randomLcg(seed?: number): () => number;