![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jan 2006
Сообщений: 54
|
Есть массив, состоящий например из 50 элементов, каждому из этих элементов присвоено значение от 1 до 50, как переиначить массив так, чтобы все эти цифры в нём рандомно перемешались?
Последний раз редактировалось WWWD; 08.06.2006 в 15:29. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
|
|
|||||
|
Регистрация: Jan 2003
Сообщений: 365
|
Если это массив объектов, то его можно сортировать по одному из параметров этих объектов.
var MyArray:Array = new Array();
var elem:Object = new Object();
for (var ii:Number=0; ii<50; ii++) {
elem = {key: random(1000), value:ii};
MyArray.push(elem);
}
MyArray.sortOn('key');
for (ii=0; ii<50; ii++) {
// выводит уже "случайные" элементы массива
trace(MyArray[ii].value);
}
Я делал это в задаче "тасования" карт в колоде (игрушку делал). Последний раз редактировалось Cvazimodo; 08.06.2006 в 12:53. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
2AlexSol: предполагается, что если есть ответ выше, то имеет смысл отвечать, если ваш ответ лучше.
2Cvazimondo: предполагается, что ответ имеет отношение к вопросу. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
2AlexSol: я к тому, что мой тест производительности (код ниже) дает разницу в 165 раз.
я бы сидел и не отсвечивал, если бы разница была каких 20%. Array.prototype.shuffle = function() {
var len = this.length;
var i = len;
while (i--) {
var j = random(len);
var n = this[j];
this[j] = this[i];
this[i] = n;
}
};
function sort(a:Object, b:Object):Number {
return (Math.random()<.5) ? -1 : 1;
}
// ----------- test
arr = [];
i = 10000;
while (i--) {
arr[i] = i;
}
t = getTimer();
arr.sort(sort);
trace((getTimer()-t));
t = getTimer();
arr.shuffle();
trace((getTimer()-t));
delete i, delete t;
|
|
|||||
|
Регистрация: Jan 2003
Сообщений: 365
|
Цитата:
|
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
сравни:
[...] Если это массив объектов [...] [...] чтобы все эти цифтры в нём [...] |
|
|||||
|
Регистрация: Jan 2003
Сообщений: 365
|
Ну и всё прекрасно. В объекте key для сортировки, а value - цифры, буквы, строки и любые другие объекты...
И, наверно, основной вопрос можно было бы охарактеризовать не как "цифры", а как "рандомная сортировка в массиве". Цифры, элементы массива - детали. Последний раз редактировалось Cvazimodo; 08.06.2006 в 13:32. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
жмём сюда:
![]() в поле "ключевые слова" вводим (не поверите): "случайная сортировка массива" нажимаем ентер. получаем одну-единственную тему в результатах. http://flasher.ru/forum/showthread.p...hlight=shuffle (обратите внимание на дату создания темы) там предложена куча вариантов сортировки, разной степени тормознутости и оригинальности. в том числе и вариант, который предложил Ив. |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|