0 votes

Puis-je générer un tableau aléatoire sans répétition du même nombre à n'importe quel index ?

J'ai un tableau en as3 qui contient des éléments comme MyArray2[0] = 25;
MyArray2[1] = 31;
MyArray2[2] = 45;
MyArray2[3] = 50;
MyArray2[4] = 81; MyArray2[5] = 90;
MyArray2[6] = 94;

Je veux randomiser ce tableau et le tableau peut contenir plus de valeurs ... Que dois-je faire ?? J'ai fait un algorithme approximatif pour cela... J'ai besoin d'une meilleure façon d'optimisation ??

0voto

Curtis Points 2157

Placez tous les nombres possibles dans une liste chaînée. Ensuite, créez un tableau de destination qui contiendra vos résultats. Pour chaque élément dans le tableau de résultat, sélectionnez un nombre aléatoire entre 0 et la longueur de votre liste chaînée. Prenez cet élément dans la liste chaînée, retirez-le de la liste (pour ne pas le choisir à l'avenir) et placez sa valeur dans le tableau de résultat. Répétez.

Une fois terminé, tous les nombres originaux seront répartis de manière aléatoire dans le tableau de résultat, et vous n'aurez pas eu à faire de comparaisons en cours de route.

0voto

blazeprogrammer Points 40

N'ai pas regardé AS3 depuis longtemps, mais voici un code de base que vous devriez pouvoir utiliser assez facilement.

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;
}

Essentiellement, vous itérez simplement sur le tableau et échangez chaque élément avec un élément aléatoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X