fast-random

2.0.4 • Public • Published

fast-random

npm version

Simple fast seedable pseudo-random number generator

Purpose

Returns a single factory function that creates a new pseudo-random number generator (PRNG) based on the provided seed value. The generator returns 32-bit pseudo-random integers using the Lehmer/Park-Miller generator. This is a circular generator, which will cycle through all 2147483646 possible values before repeating

While not the most robust of PRNGs, the code has a very small footprint, is extremely quick and produces results good enough for many purposes. It has been written to work both within Node.js and in the browser

Installation

npm install --save fast-random

API Summary

Get a new random number generator

const random = require('fast-random');
 
const seed = 12345;
const generator = random(seed);

The returned generator contains the following functions

  • seed(SEED_VALUE): set the current seed value (SEED_VALUE is an integer)
  • nextInt(): get the next integer value (1 <= x <= 2147483646)
  • nextFloat(): get the next float value (0 <= x < 1)

Examples

General use

const random = require('fast-random');
 
// create a new generator
const seed = 12345;
const r = random(seed);
 
// produce some integer values
for (let i = 0; i < 8; ++i) {
    console.log(r.nextInt());
}
 
// reset the seed
r.seed(seed);
 
// produce some floating point values
for (let j = 0; j < 8; ++j) {
    console.log(r.nextFloat());
}

Set seed from current time

const random = require('fast-random');
 
const seed = Date.now();
const r = random(seed);

Get integers in a given range

const random = require('fast-random');
 
const seed = 12345;
const r = random(seed);
 
// get random number between a and b inclusive, ie (a <= x <= b)
function getRandomBetween(a, b) {
    return a + r.nextInt() % (- a + 1);
}

More information

Dependencies (0)

    Dev Dependencies (5)

    Package Sidebar

    Install

    npm i fast-random

    Weekly Downloads

    191

    Version

    2.0.4

    License

    MIT

    Last publish

    Collaborators

    • borilla