1.0.13 • Published 5 years ago

xorshift256 v1.0.13

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Build Status Coverage Status npm version

XorShift256

A tiny standalone seedable random number generator that has a period of 2^256 - 1.

Read this in other languages: English, 简体中文.

Usage

npm install xorshift256

If used in browsers that don't support es6, transpilation is not needed but polyfill is required.

Node.js

const XorShift256 = require('xorshift256');

const rng = XorShift256(Math.random());

The constructor accepts one optional seed parameter. If you don't provide one. It will be seeded with a fixed default seed: XorShift256.defaultSeed. You can pass anything as seed. It's recommended that you pass an array of numbers.

You can also reseed the generator anytime after creation:

rng.seed(some-seed);

To generate a floating point value in the interval [0, 1):

rng();
// or:
rng.uniform01();

To generate a floating point value in the interval [-1, 1):

rng.uniform11();

To generate a floating point value in the interval [min, max):

rng.uniform(min, max);
// or:
const generate = rng.uniformGenerator(min, max);
generate();

To generate a 32bit unsigned integer:

rng.uint32();

To generate a 32bit integer:

rng.int32();

To generate an integer value in the interval [min, max):

rng.uniformInt(min, max);
// or:
const generate = rng.uniformIntGenerator(min, max);
generate();

To generate an integer value in the interval 0, 255:

rng.byte();

To generate an array of bytes:

rng.bytes(length);
// or
const arr = new Array(length);
rng.bytes(arr);

To generate uuid v4 (this RNG can generate all possible combinations of 256 bits, excluding all zero, so it's safe to be used to generate uuid v4):

rng.uuid4();

To shuffle an array:

rng.shuffle(array);

To discard certain number of results:

rng.discard(100);

To make a deep copy of the generator:

const clone = rng.clone();

To check if two generators are equal (that is they will generate identical sequence):

clone.equals(rng)

To save the internal state of the generator:

const data = rng.serialize(); // data is a string

To restore the internal state of the generator:

rng.deserialize(data); // return true if succeeded. return false and keep internal state intact if data is not valid.
// or:
const rng2 = XorShift256.deserialize(data);

License

Nillith, 2018. Licensed under an MIT license.

1.0.13

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago