seeded-random
Version:
CLI and code pseudo random number generator
52 lines (40 loc) • 1.17 kB
JavaScript
var MD5 = require('crypto-js/md5');
/*
* Class which generates random numbers from a
* given seed using the MD5 hash algorithm.
* Requires crypto-js.
*/
var Random = function () {
this.maximum = 0x100000000;
};
(function (static_, proto_) {
/*
* Returns decimal random number.
*/
proto_.decimal = function (seed) {
var hash = MD5(seed + '').toString();
var subHash = hash.substring(0, 8);
var intSubHash = parseInt(subHash, 16);
var decimal = intSubHash / this.maximum;
return decimal;
};
/*
* Returns random number within range.
*/
proto_.range = function (seed, min, max) {
var decimal = this.decimal(seed + '' + min + '' + max);
var number = min + Math.floor(decimal * (max - min + 1));
return number;
};
/*
* Returns random element of given array.
*/
proto_.element = function (seed, array) {
var min = 0;
var max = array.length - 1;
var index = this.range(seed, min, max);
var element = array[index];
return element;
};
}(Random, Random.prototype));
module.exports = Random;