Просмотр полной версии : Взять из массива переменную!..
Есть массив с множеством переменных.
Вопрос - как взять из него все переменные, но в случайном порядке так чтобы переменные не повторялись?
Пример - есть 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 - кол-во его элементов
Понял.
Пасибки, Darina :)
Периодически рандом повторялся и в итоге некоторые переменные дублировались с затираением других...
Выход нашел так:
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];
}
}
Помогли друзья Php-шники... :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.