UNPKG

seeded-random

Version:
52 lines (40 loc) 1.17 kB
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;