node package manager


Collection of seedable Pseudorandom Number Generators


Install via npm

$ npm install rng

Install via component

$ component install jhermsmeier/rng.js

Install via bower

$ bower install rng
// Require the module 
var Random = require( 'rng' )
// Instantiate a new Mersenne Twister with a seed 
var mt = new Random.MT( seed )
// ... 
<!-- Required -->
<script src="path/to/rng/rng.js"></script>
<!-- Optionals, only load what you need -->
<script src="path/to/rng/lib/mersenne-twister.js"></script>
<script src="path/to/rng/lib/park-miller.js"></script>
<script src="path/to/rng/lib/....js"></script>
// RNG.js exports the global `Random`, so you're good to go. 
// Instantiate a new Mersenne Twister with a seed 
var mt = new Random.MT( seed )

Base class using Math.random() as PRNG. All other classes inherit from RNG().

Number next() Get a random byte [0,255]

Number random() Same as uniform(), just to be compatible with the Math.random() style API

Number uniform() Get a uniform random number between 0 and 1

Number normal() Get normally distributed number, with a mean 0, variance 1

Number range( min, max ) Get random integer in range [min,max]

Number exp() Get exponentionally distributed number with lambda 1

Number poisson( mean ) Get poisson distributed number, the mean defaulting to 1

Number gaussian( a ) Get gamma distributed number, using uniform, normal and exp with the Marsaglia-Tsang method

  • ISAAC - ISAAC (indirection, shift, accumulate, add, count)
  • MWC - Multiply-With-Carry
  • CMWC - Complementary-Multiply-With-Carry
  • LCG - Linear Congruential Generator
  • ICG - Inversive Congruential Generator
  • LFG - Lagged Fibonacci Generator
  • LFSR - Linear Feedback Shift Register
  • NRPF - Naor-Reingold Pseudorandom Function
  • BBS - Blum Blum Shub