UNPKG

unique-random-range

Version:

Generate unique random numbers, for a given range.

35 lines (33 loc) 869 B
"use strict"; /** * 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; };