JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 197
  • Score
    100M100P100Q79181F
  • License MIT

Fast simple seedable pseudo-random number generator

Package Exports

  • fast-random

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fast-random) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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() % (b - a + 1);
}

More information