Pseudorandom Number Generators

Base (i.e., lower-level) pseudorandom number generators (PRNGs).

Usage

var random = require( '@stdlib/random/base' );

random

Namespace containing "base" (i.e., lower-level) pseudorandom number generators (PRNGs).

var ns = random;
// returns {...}

The namespace contains the following PRNGs:

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>

Examples

var objectKeys = require( '@stdlib/utils/keys' );
var random = require( '@stdlib/random/base' );

console.log( objectKeys( random ) );
Did you find this page helpful?