Цитата:
|
Сообщение от iNils
 Код:
var arrayA:Array = new Array (0, 1, 2, 3, 4, 5, 6);
var arrayB:Array = arrayA.concat()
for (var i:Number = 0; i < arrayA.length; i++) {
var rnd:Number = Math.floor (Math.random () * arrayB.length);
var del:Array = arrayB.splice (rnd, 1);
trace (arrayA[del]);
}
|
Уважаемый iNils, извините пож. но почему этот код выводит то что хотелось и компилятор не ругается?
Если del это Array, то что такое arrayA[del]?
Я бы так сделал:

Код:
//исходный массив
var myArr:Array = new Array (0, 1, 2, 3, 4, 5, 6);
// копия
var arr:Array = myArr.concat();
//длинна массива, чтобы не искать ее лишний раз
var num:Number = arr.length;
while ( num > 0 ){
// случайный индекс
var rnd:Number = Math.floor (Math.random () * num );
// выдергиваем элемент с этим индексом из массива
trace (arr.splice( rnd, 1 ) );
// длинна массива уменьшилась
num--;
}
PS - только что заметил вторую страницу. Вопрос все равно остался.
Автор, а повторения кстати неизбежны.
Имеем ряд 1,2,3
Первое перемешивание 2,3,1
Второе перемешивание 1,3,2
цифра 1 повторилась - все как в жизни, так бывает.
Если вам нужно избежать такой ситуации, надо исключать последний выпавший номер из нашей "лотереи".