# rng

> Collection of seedable Pseudorandom Number Generators

Latest version **0.2.2** (published 2014-03-06) · MIT license · 0 weekly downloads

## Install

```sh
npm install rng
pnpm add rng
yarn add rng
bun add rng
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.2 |
| Published | 2014-03-06 |
| First published | 2013-10-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Jonas Hermsmeier |
| Maintainers | jhermsmeier |

## Links

- npm: https://www.npmjs.com/package/rng
- Repository: https://github.com/jhermsmeier/rng.js
- Issues: https://github.com/jhermsmeier/rng.js/issues
- npm.io page: https://npm.io/package/rng

## Recent versions

- 0.2.2 (latest) — 2014-03-06
- 0.2.1 — 2013-11-13
- 0.2.0 — 2013-10-30
- 0.1.0 — 2013-10-05

## README

# Random [![build status](https://secure.travis-ci.org/jhermsmeier/rng.js.png)](http://travis-ci.org/jhermsmeier/rng.js) [![NPM version](https://badge.fury.io/js/rng.png)](https://npmjs.org/rng) [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/jhermsmeier/rng.js/trend.png)](https://bitdeli.com/free "Bitdeli Badge")


## Install via [npm](https://npmjs.org/)

```shell
$ npm install rng
```


## Install via [component](http://github.com/component/)

```shell
$ component install jhermsmeier/rng.js
```


## Install via [bower](http://twitter.github.com/bower/)

```shell
$ bower install rng
```


## Usage

### Node.js

```javascript
// Require the module
var Random = require( 'rng' )
// Instantiate a new Mersenne Twister with a seed
var mt = new Random.MT( seed )
// ...
```


### Browser

```html
<!-- 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>
```

```javascript
// 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 )
```


## API

### Class: `RNG()`
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

### 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*

---
_Source: https://npm.io/package/rng · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
