использовать Math.random без повторения значений
Добрый день, прошу подсказать решение..
Нужно перемешать массив из 16 дивов, но чтобы числа не повторялись. На форуме для данного случая решения не нашел. Пытался использоваь shuffle - не получается. function mix_picts() { for(i = 0; i<= picts.length - 1; i++) { var num = Math.floor(Math.random() * cnt_images) + 1; picts[i].style.background = 'url(img/' + num + '.jpg)'; } } mix_picts() Заранее спасибо. |
Оч Быстрый Код от Рони! (Плохо искали...
Array.prototype.shuffle = 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(16).shuffle(); alert(arr); |
буду пробовать
Спасибо |
function shuffle(array) { var currentIndex = array.length, temporaryValue, randomIndex; while (0 !== currentIndex) { randomIndex = Math.floor(Math.random() * currentIndex); currentIndex -= 1; temporaryValue = array[currentIndex]; array[currentIndex] = array[randomIndex]; array[randomIndex] = temporaryValue; } return array; } alert(shuffle([1,2,3,4,5,6,7,8,9])); описание метода https://en.wikipedia.org/wiki/Fisher...3Yates_shuffle Fisher–Yates Shuffle Visualization |
Цитата:
|
строгое сравнение быстрее отрабатывать должно
|
Часовой пояс GMT +3, время: 18:51. |