unique-random-range
Version:
Generate unique random numbers, for a given range.
35 lines (33 loc) • 869 B
JavaScript
;
/**
* uniqueRandomRange
* Generate unique random numbers, for a given range.
*
* @name uniqueRandomRange
* @function
* @param {Number} min The lowest number.
* @param {Number} max The highest number.
* @returns {Function} A function retruning integers between `min` and `max`
* (including `min` and `max`). It has a `reset` method which will clear
* the cache.
*/
module.exports = function uniqueRandomRange(min, max) {
var RANGE = [];
for (var i = min; i <= max; ++i) {
RANGE.push(i);
}
var _ = [];
var rand = function rand() {
if (!_.length) {
rand.reset();
}
var index = Math.floor(Math.random() * _.length);
var r = _[index];
_.splice(index, 1);
return r;
};
rand.reset = function () {
_ = RANGE.concat([]);
};
return rand;
};