@verhov Лень было читать всю вашу переписку. Вот на коленке написал генератор, будет перебирать целые числа в заданном диапазоне, когда доступные значения закончатся, то очистит пул использованных значений и начнет заново
randomNumber = function(a,b) {
this.was_used = [],
this.a = a,
this.b = b
};
randomNumber.prototype.get = function(){
while(true){
var randomNum = Math.floor(Math.random() * (this.b-this.a + 1)) + parseInt(this.a);
if(this.was_used.indexOf(randomNum)< 0) {
this.was_used.push(randomNum);
return randomNum;
};
if(this.was_used.length == this.b - this.a + 1) this.clear(); //Если кончились доступные знаяения обнуляем
};
};
randomNumber.prototype.clear =function(){ //Очистка использованных значений
this.was_used = [];
};
randNum = new randomNumber(1,10) //Создает новый генератор чисел в заданном диапазоне
log( randNum.get() );