Показать сообщение отдельно
  #21 (permalink)  
Старый 26.12.2015, 17:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Создание массива с уникальными данными и в указанном диапазоне
функция заполняет массив уникальными данными в указанном диапазоне или перемешивает исходный, если диапазон не указан заполняет от нуля по порядку.
в трёх примерах ниже генерация происходит только пять раз.(исходная длина массива)

<script>
Array.prototype.randomShuffle = function(min,max) {
  min = min || 0;
  max = ++max || this.length;
  var len = max - min;
  max = len - this.length;
  this.length = len;
    for (var a = this.length-1; 0 <= a; a--) {
       if(a < max) {break}
        var b = Math.floor(Math.random() * a),
            c = void 0 === this[b] ? (b + min) : this[b];
            this[b] = void 0 === this[a] ? (a + min) : this[a];
            this[a] = c
    }
    this.reverse();
    this.length -= max;
    return this
};
var arr = Array(5).randomShuffle();
document.write(arr+"<br>")
var arr = Array(5).randomShuffle(-100,100);
document.write(arr+"<br>")
var arr =[1,2,3,4,5].randomShuffle();
document.write(arr+"<br>")
document.write(["Собака след не взяла, Взяла", "но была убита убегающим", "след потеряла"].randomShuffle()+"<br>")
</script>

Последний раз редактировалось рони, 26.12.2015 в 19:35.
Ответить с цитированием