Pseudorandom Number Generators
Base (i.e., lower-level) pseudorandom number generators (PRNGs).
var random = require( '@stdlib/random/base' );
Namespace containing "base" (i.e., lower-level) pseudorandom number generators (PRNGs).
var ns = random;
// returns {...}
The namespace contains the following PRNGs:
- arcsine( a, b ): arcsine distributed pseudorandom numbers.
- bernoulli( p ): Bernoulli distributed pseudorandom numbers.
- beta( alpha, beta ): beta distributed pseudorandom numbers.
- betaprime( alpha, beta ): beta prime distributed pseudorandom numbers.
- binomial( n, p ): binomial distributed pseudorandom numbers.
- boxMuller(): standard normally distributed pseudorandom numbers using the Box-Muller transform.
- cauchy( x0, gamma ): Cauchy distributed pseudorandom numbers.
- chi( k ): Chi distributed pseudorandom numbers.
- chisquare( k ): Chi-square distributed pseudorandom numbers.
- cosine( mu, s ): raised cosine distributed pseudorandom numbers.
- discreteUniform( a, b ): discrete uniform distributed pseudorandom numbers.
- erlang( k, lambda ): Erlang distributed pseudorandom numbers.
- exponential( lambda ): exponentially distributed pseudorandom numbers.
- f( d1, d2 ): F distributed pseudorandom numbers.
- frechet( alpha, s, m ): Fréchet distributed pseudorandom numbers.
- gamma( alpha, beta ): gamma distributed pseudorandom numbers.
- geometric( p ): geometric distributed pseudorandom numbers.
- gumbel( mu, beta ): Gumbel distributed pseudorandom numbers.
- hypergeometric( N, K, n ): hypergeometric distributed pseudorandom numbers.
- improvedZiggurat(): standard normally distributed pseudorandom numbers using the Improved Ziggurat method.
- invgamma( alpha, beta ): inverse gamma distributed pseudorandom numbers.
- kumaraswamy( a, b ): Kumaraswamy's double bounded distributed pseudorandom numbers.
- laplace( mu, b ): Laplace (double exponential) distributed pseudorandom numbers.
- levy( mu, c ): Lévy distributed pseudorandom numbers.
- logistic( mu, s ): logistic distributed pseudorandom numbers.
- lognormal( mu, sigma ): lognormal distributed pseudorandom numbers.
- minstdShuffle(): A linear congruential pseudorandom number generator (LCG) whose output is shuffled.
- minstd(): A linear congruential pseudorandom number generator (LCG) based on Park and Miller.
- mt19937(): A 32-bit Mersenne Twister pseudorandom number generator.
- negativeBinomial( r, p ): negative binomially distributed pseudorandom numbers.
- normal( mu, sigma ): normally distributed pseudorandom numbers.
- pareto1( alpha, beta ): Pareto (Type I) distributed pseudorandom numbers.
- poisson( lambda ): Poisson distributed pseudorandom numbers.
- randi(): pseudorandom numbers having integer values.
- randn(): standard normally distributed pseudorandom numbers.
- randu(): uniformly distributed pseudorandom numbers between 0 and 1.
- rayleigh( sigma ): Rayleigh distributed pseudorandom numbers.
- reviveBasePRNG( key, value ): revive a JSON-serialized pseudorandom number generator (PRNG).
- t( v ): Student's t-distributed pseudorandom numbers.
- triangular( a, b, c ): triangular distributed pseudorandom numbers.
- uniform( a, b ): uniformly distributed pseudorandom numbers.
- weibull( k, lambda ): Weibull distributed pseudorandom numbers.
Attached to each PRNG are the following properties:
- NAME: the generator name.
- seed: the value used to seed the PRNG.
- seedLength: the length of the PRNG seed.
- state: the PRNG state.
- stateLength: the length of the PRNG state.
- byteLength: the size of the PRNG state.
- PRNG: the underlying pseudorandom number generator.
Additionally, attached to each PRNG is a .factory() method which supports creating a seeded PRNG and thus generating a reproducible sequence of pseudorandom numbers.
var rand;
var v;
var i;
// Generate pseudorandom values...
for ( i = 0; i < 100; i++ ) {
v = random.randu();
}
// Generate the same pseudorandom values...
rand = random.randu.factory({
'seed': random.randu.seed
});
for ( i = 0; i < 100; i++ ) {
v = rand();
}
For parameterized PRNGs, the .factory() method supports specifying parameters upon either PRNG creation or invocation. For example,
// Create a PRNG which requires providing parameters at each invocation:
var rand = random.normal.factory({
'seed': 12345
});
var r = rand( 1.0, 2.0 );
// returns <number>
// Create a PRNG with fixed parameters:
rand = random.normal.factory( 1.0, 2.0, {
'seed': 12345
});
r = rand();
// returns <number>
var objectKeys = require( '@stdlib/utils/keys' );
var random = require( '@stdlib/random/base' );
console.log( objectKeys( random ) );