![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Guest
Сообщений: n/a
|
нужна помощь
есть мульти массив необходимо создать функцию создающую новый массив, равный по длинне начальному,и состоящий из элементов старого, взятых рэндомом, но не повторяющихся знает ли кто нибудь решешение??? |
|
|||||
|
Я делал это так (возможно, не самый элегантный способ).
Смысл следующий: выбирается случайным способом номер элемента массива и переставляется с первым, и так count-раз. function ArrayShuffle(arr) { //можно + 100, + 1000. Чем больше цифра, тем тщательнее //перемешается var cnt = arr.length + 10; for(var i = 0; i < cnt; i++) { var index = random(arr.length - 1) + 1; var tmp = arr[0]; arr[0] = arr[index]; arr[index] = tmp; } }
__________________
Я не любопытный и хитрый, а любознательный и сообразительный! Последний раз редактировалось Lego; 01.07.2004 в 15:26. |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
2DeliMIter
тоже вариант, но перемешивание слабое. ты берёшь элемент из любой ячейки и кладёшь его в последнюю. то есть можно взять последний элемент и положить его в последнюю ячейку. а можно два раза сделать то же самое. а можно три - как рандом выпадет... Последний раз редактировалось Nox Noctis; 01.07.2004 в 16:56. |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
Вероятность того, что массив окажется неперемешанным - 2 в степени минус длины массива. Особо гнобливые и придирчивые могут не брать последний элемент.
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
хе-хех.. так я же не о ПОЛНОМ неперемешивании массива.
какова для каждого элемента вероятность того что он окажется неперемешанным? |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
Реверс - и массив уж не такой, как был вчера... Можно придумать сколько угодно алгоритмов. Можно перемешивать хорошо, но не случайно, например вторую половину реверсом через один с первой - и так восемь раз. Вопрос, нужно ли?
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
Регистрация: Nov 2001
Адрес: и провыплёвывает
Сообщений: 26
|
|
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
тоже работает.. но лишние итерации мне лично не нравятся..
|
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
еще вариант - итераций ровно столько сколько элементов в массиве, но при этом приходится дублировать массив.
|
![]() |
Часовой пояс GMT +4, время: 00:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|