Могу ли я случайный массив без повторения одного и того же числа на любой индекс? - PullRequest
0 голосов
/ 07 июля 2010

У меня есть массив в as3, который имеет такие элементы, как MyArray2 [0] = 25;
MyArray2 [1] = 31;
MyArray2 [2] = 45;
MyArray2 [3] = 50;
MyArray2 [4] = 81;MyArray2 [5] = 90;
MyArray2 [6] = 94;

Я хочу randmize этот массив и массив может содержать больше значений ... что я должен делать ??я сделал грязный алогритм для этого ... мне нужен хороший способ оптимизировать ??

Ответы [ 2 ]

0 голосов
/ 08 июля 2010

Давно не смотрели на AS3, но вот некоторый базовый код, который вы сможете довольно легко использовать.

var tmpVal, tmpInd, len;

len = MyArray.length;
for(var i=0; i < len; i++) {
    tmpInd = random(0,len);//grab a random index
    tmpVal = MyArray[tmpInd];//store the value
    //swap the values
    MyArray[tmpInd] = MyArray[i];
    MyArray[i] = tmpVal;
}

По сути, вы просто перебираете массив и меняете местамикаждый элемент со случайным элементом.

0 голосов
/ 07 июля 2010

Поместите все возможные номера в связанный список.Затем создайте целевой массив, который будет содержать ваши результаты.Для каждого элемента в массиве результатов выберите случайное число от 0 до длины вашего связанного списка.Возьмите этот элемент в связанном списке, удалите его из списка (чтобы вы не выбрали его в будущем) и поместите его значение в массив результатов.Повторите.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...