![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2000
Адрес: Piter
Сообщений: 111
|
Есть массив с множеством переменных.
Вопрос - как взять из него все переменные, но в случайном порядке так чтобы переменные не повторялись? Пример - есть 20 полей. На каждом поле - уникальный мувик. Нужно в случайном порядке расставить их на поля так чтобы они не повторялись.
__________________
Если у Страха глаза велики, то какие они у Ужаса?.. |
|
|||||
|
Надо сделать так называемое "перемешивание".
Например так: for(i=0; i<num; i++) M[i]=i; for(i=0; i<num; i++) {pos=random(num); tmp=M[i]; M[i]=M[pos]; M[pos]=tmp;} M - это твой массив, а num - кол-во его элементов
__________________
www.ori-art.com |
|
|||||
|
Регистрация: Oct 2000
Адрес: Piter
Сообщений: 111
|
Понял.
Пасибки, Darina ![]()
__________________
Если у Страха глаза велики, то какие они у Ужаса?.. |
|
|||||
|
Регистрация: Oct 2000
Адрес: Piter
Сообщений: 111
|
Периодически рандом повторялся и в итоге некоторые переменные дублировались с затираением других...
Выход нашел так: function MixArray(array, _array) {
//Обнуляем выходной массив. 0 - признак того что ячейка свободна
for (i = 0; i < array.length; i ++)
_array[i] = 0;
//Смотрим каждый элемент исходного массива
for (i = 0; i < array.length; i ++)
{
//Находим куда ставить элемент в выходной массив
new_pos = random(array.length);
// Если ячейка в выходном массиве занята или вставляем элемент на ту же
// позицию - меняем позицию
while(new_pos == i || _array[new_pos]!=0)
{
new_pos++;
if (new_pos>=array.length)
new_pos = 0;
}
//Вставка элемента на место
_array[new_pos] = array[i];
}
}
![]()
__________________
Если у Страха глаза велики, то какие они у Ужаса?.. |
![]() |
Часовой пояс GMT +4, время: 07:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|