![]() |
как рандомно переставить элементы в массиве?
Есть массив, состоящий например из 50 элементов, каждому из этих элементов присвоено значение от 1 до 50, как переиначить массив так, чтобы все эти цифры в нём рандомно перемешались?
|
всё зависит от задачи.
в принципе есть два варианта задачи: произвольный и с обязательством не оставить ни одного на прошлом месте. надеюсь, первое. тогда элементарно: идем сюда и ищем по слову shuffle |
Код:
array.sort(sort); |
Если это массив объектов, то его можно сортировать по одному из параметров этих объектов.
Код:
var MyArray:Array = new Array();Я делал это в задаче "тасования" карт в колоде (игрушку делал). |
2AlexSol: предполагается, что если есть ответ выше, то имеет смысл отвечать, если ваш ответ лучше.
2Cvazimondo: предполагается, что ответ имеет отношение к вопросу. |
2AlexSol: я к тому, что мой тест производительности (код ниже) дает разницу в 165 раз.
я бы сидел и не отсвечивал, если бы разница была каких 20%. Код:
Array.prototype.shuffle = function() { |
Цитата:
|
сравни:
[...] Если это массив объектов [...] [...] чтобы все эти цифтры в нём [...] |
Ну и всё прекрасно. В объекте key для сортировки, а value - цифры, буквы, строки и любые другие объекты...
И, наверно, основной вопрос можно было бы охарактеризовать не как "цифры", а как "рандомная сортировка в массиве". Цифры, элементы массива - детали. |
жмём сюда:
http://flasher.ru/forum/images/russi...top_search.gif в поле "ключевые слова" вводим (не поверите): "случайная сортировка массива" нажимаем ентер. получаем одну-единственную тему в результатах. http://flasher.ru/forum/showthread.p...hlight=shuffle (обратите внимание на дату создания темы) там предложена куча вариантов сортировки, разной степени тормознутости и оригинальности. в том числе и вариант, который предложил Ив. |
| Часовой пояс GMT +4, время: 06:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.