Просмотр полной версии : Сортировка массива
Вопрос к программерам: каким образом можно отсортировать элементы массива случайным образом?
Попробовал в цикле следующее:
text=mass[Math.floor(Math.random()*mass.length)];
Работает, но при этом некоторые элементы при выводе повторяются, что в принципе нежелательно. Есть смутное подозрение, что нужно здесь заюзать метод sort(), только вот подстановка в него math.random ничего не дает. В общем подскажите, как можно реализовать сабж.
Alexey (G-fi)
04.12.2002, 00:47
Добренький вечерочек...
Доб...
Alexey (G-fi)
04.12.2002, 00:50
Добренький вечерочек...
тьфу, блин, радио чип в голове барахлит...
Щас...
:rolleyes:
Секундочку :rolleyes:
«.. раз... раз» О – нормалёк :D
Слушай, Rotator , а может тебе проще случайно выбирать элементы из массива, а не мучать ЕГО. :rolleyes:
Гм?
Nox Noctis
04.12.2002, 02:04
randomize = function (source) {
var result = [];
var heap = source.concat();
for (var i = 0; i<source.length; i++) {
var rnd = random(heap.length);
result.push(heap[rnd]);
heap.splice(rnd, 1);
}
return result;
};
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
b = randomize(a);
trace(a);
trace(b);
пояснение:
heap = source.concat();
это всего лишь способ скопировать исходный массив, чтобы не модифицировать его при сортировке...
(конкат присоединяет к исходному массиву пустое место (потому что аргумент не указан) и возвращает новый массив (получается точная копия исходного =) ))
2Nox Noctis: Круто! :) как раз то, что и требовалось. Спасибо
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.