PDA

Просмотр полной версии : 5 из 5 беспорядочно в массиве


SKiLL
12.11.2007, 08:25
Подскажите как создать массив из 5 последовательных чисел, но расположенных в нем беспорядочно, или как из можно размешать их в массиве?
Я смог придумать только это, но код выполняется долго :(

num11 = random(5);
num22 = random(5);
while (num22 == num11) {
num22 = random(5);
}
num33 = random(5);
while (num33 == num11 || num33 == num22) {
num33 = random(5);
}
num44 = random(5);
while (num44 == num11 || num44 == num22 || num44 == num33) {
num44 = random(5);
}
num55 = random(5);
while (num55 == num11 || num55 == num22 || num55 == num33 || num55 == num44) {
num55 = random(5);
}

screamge
12.11.2007, 08:42
Страшно стало :)


var ar:Array = new Array(1, 2, 3, 4, 5);
var arLength:Number = ar.length;

var secar:Array = [];
trace(ar);

for (i=0; i<arLength; i++) {
var num:Number = Math.floor(Math.random()*ar.length);
secar.push(ar[num]);
ar.splice(num, 1);
}

trace(secar);

SKiLL
12.11.2007, 08:53
Большое спасибо! А прокоментировать не затруднит? : )

screamge
12.11.2007, 09:11
В первом массиве как наглядно показано записаны числа. (если лень ручками вписывать можно циклом пройтись).
Сохраняем длину массива так как она будет меняться. Далее создаём пустой массив.

Цикл проходится по всем записям массива, в рендомном порядке выбирает из массива число и запихивает в новый массив, далее удаляет из старого массива то что было записано чтобы не допустить повторение.

Если на русском, то так. :)

Почитайте про методы которые были использованы станет более понятно.

SKiLL
12.11.2007, 10:11
Все понятно, спасибо за разъяснение : )