rand-seed

A small library for generating random numbers

Usage no npm install needed!

<script type="module">
  import randSeed from 'https://cdn.skypack.dev/rand-seed';
</script>

README

NPM Version downloads Build Status dependencies dev dependencies tested with jest codecov Quality Gate Status License

rand-seed

A small seedable random number generator library written in TypeScript

The default Math.random() function doesn't allow for setting a seed. This library offers a number of different semi-random number generators which may be initialised with an arbitrary seed in string format, hence, making it possible to produce sequences of semi-random numbers that are always the same for a given seed. The implemented algorithms are detailed here (note that I am not the author of that post, I merely used it for the implementation of this library).

Installation

This package is available through npm:

npm install --save rand-seed

Usage

Either import directly

<script src="path-to-rand-seed/rand-seed.js"></script>

or import in your own scripts using

import Rand, {PRNG} from 'rand-seed';

Then simply create a new instance with an (optional) seed:

const rand = new Rand('1234');

rand.next(); // Generate a new random number

If no seed is specified the call to rand.next() will simply be forwarded to Math.random(). In case of a supplied seed, the sfc32 algorithm will be used by default. Currently, three different algorithms are provided: sfc32, mulberry32 and xoshiro128**. If you would like to use a different algorithm, create a new instance like so:

// Create a new random number generator using the xoshiro128** algorithm
const rand = new Rand('1234', PRNG.xoshiro128ss);

Example

A simple example is included. This may be run with node: node example/index.js