Random
npm
Install via$ npm install rng
component
Install via$ component install jhermsmeier/rng.js
bower
Install via$ bower install rng
Usage
Node.js
// Require the modulevar Random = // Instantiate a new Mersenne Twister with a seedvar mt = seed // ...
Browser
<!-- Required --><!-- Optionals, only load what you need -->
// RNG.js exports the global `Random`, so you're good to go.// Instantiate a new Mersenne Twister with a seedvar mt = seed
API
RNG()
Class: Base class using Math.random()
as PRNG.
All other classes inherit from RNG()
.
Methods
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
Algorithms
RNG.MT( seed )
- Mersenne Twister
Class: RNG.PM( seed )
- Park-Miller
Class: RNG.XOR( x, y, z, w )
- XOR Shift
Class: 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