node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »


Random build status NPM version Bitdeli Badge

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 )


Class: RNG()

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


Class: RNG.MT( seed ) - Mersenne Twister

Class: RNG.PM( seed ) - Park-Miller

Class: RNG.XOR( x, y, z, w ) - XOR Shift

Not (yet?) implemented:

  • 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