Socket
Book a DemoInstallSign in
Socket

prng-well1024a

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

prng-well1024a

Random number generator based on WELL-1024a algorithm.

2.0.0
latest
Source
npmnpm
Version published
Weekly downloads
4.2K
9.28%
Maintainers
1
Weekly downloads
 
Created
Source

well1024a.js

NPM

This is a Javascript implementation of the WELL-1024a pseudorandom number generation algorithm.

Javascript's built-in Math.random() function is implementation-dependent and therefore of limited usefulness if your program depends on random numbers, as you risk running into crappy implementations. Even the V8 engine (used by Node.js) only provides 32-bit entropy, and is based on the platform-dependent C++ rand() function.

This module is very bare-bones. I have also written a randomness library called randy that provides useful functions like RandInt(min, max), shuffle(array) etc., based on this module.

Quick Example

var rng = well1024a();
var number = rng.getUInt32();
var coin = ['heads', 'tails'][number % 2];
// coin == 'heads'
## Download

For Node.js, use npm:

npm install prng-well1024a
### In the Browser

Download and include as a <script>. The module will be available as the global object randy.

Development: well1024a.js - 2Kb Uncompressed

Production: well1024a.min.js - < 1Kb Minified

Example

<script src="well1024a.min.js"></script>

I am <span id="age"></span> years old!

<script>
    var n = document.getElementById("age");
    var myAge = well1024a.getUInt32();
    n.innerText = myAge.toString();
</script>

Documentation

Constructor

  • well1024a

Instance Functions

## well1024a(entropy) ## well1024a()

Returns a new well1024a instance, which is an object with 3 functions:

The instance will use Math.random() to fill out the initial seed state.

Arguments

  • entropy - default=[]. Array of numbers to add to the initial seed. These should be based on environmental values that are likely to be different on each run such as system time, process ID, browser window height, values from /dev/urandom etc.

Example

var w = well1024a([
    Date.now(),
    os.freemem(),
    process.pid
]);
## getUInt32()

Returns a random positive integer less than 2^32.

Example

var w = well1024a();

console.log('For Christmas this year, I want ' + w.getUInt32().toString() + ' ponies!');
## getState()

Returns an array of 32-bit unsigned integers, of length 32. This represents the current state of the random number generator.

This array can be used as a parameter to setState.

## setState(state)

Sets the random number generator to a specific state, allowing for replay of random values.

General use case is to give it a value previously received by calling getState().

Arguments

  • state - Must be an array of 32-bit unsigned integers, of length 32.

Example

This will flip a pair of coins, reset the generator state, and flip the coins again with the exact same output.

var w = well1024a();
var coins = ['heads', 'tails'];

console.log("Flippin' the coins:");
var state = w.getState();
var d1 = coins[w.getUInt32() % 2];
var d2 = coins[w.getUInt32() % 2];
console.log(d1 + " and " + d2);

console.log("Instant replay:");
w.setState(state);
d1 = coins[w.getUInt32() % 2];
d2 = coins[w.getUInt32() % 2];
console.log(d1 + " and " + d2);

Notes

No functions rely on this, so it's safe to e.g. assign randy.good.randInt to a variable or pass it around as a parameter.

Keywords

prng

FAQs

Package last updated on 09 Sep 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.