Skip to content

Instantly share code, notes, and snippets.

@followben
Forked from lpinca/prng.js
Created March 24, 2020 03:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save followben/02a6184f6eb23152a3c8e0bb43756db6 to your computer and use it in GitHub Desktop.
Save followben/02a6184f6eb23152a3c8e0bb43756db6 to your computer and use it in GitHub Desktop.
Pseudorandom number generator based on crypto.randomBytes
var crypto = require('crypto')
, rrange = 4294967296;
/**
* Return an integer, pseudo-random number in the range [0, 2^32).
*/
var nextInt = function() {
return crypto.randomBytes(4).readUInt32BE(0);
};
/**
* Return a floating-point, pseudo-random number in the range [0, 1).
*/
var rand = function() {
return nextInt() / rrange;
};
/**
* Return an integer, pseudo-random number in the range [min, max].
*/
var randInt = function(min, max) {
if (typeof min === 'undefined') {
return nextInt();
}
if (typeof max === 'undefined') {
max = min;
min = 0;
}
return min + Math.floor(rand() * (max - min + 1));
};
exports.rand = rand;
exports.randInt = randInt;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment