[DB,AL]:ordonner et ranger une suite de nbr ds un array...

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
slumberlander
Messages : 87
Inscription : 30 Nov 2011 20:10
Contact :

[DB,AL]:ordonner et ranger une suite de nbr ds un array...

Message par slumberlander » 07 Mars 2017 18:01

Bonjour,

je débute,

j'ai rangé dans un tableau une série de vidéos,:

Code : Tout sélectionner

var mesVideos : MovieTexture[];
je voudrais que mon gameObject les Playdans un ordre aléatoire sans se répéter!
du coup je pense faire un Random une fois pour toute( en start), pour ranger le résultat du tirage au sort dans un autre tableau.

Code : Tout sélectionner

var ordre: int[]
comme ca je pourrais jouer mes videos comme ceci:

Code : Tout sélectionner

mesVideos[ordre[i]].Play();
Mon problème c'est que Random.Range(0,mesVideos.length); ca me sort un numéro du chapeau moi je veux un classement.

donc 2 questions:

1/ comment t je fais un classement aléatoire entre 0 et mesVideos.lengh
2/ comment je met ce classement dans un tableau?

bon j'espère que vous mavez compris!
si vous avez une autre idée je suis preneur bien sur!

par avance merci!

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: [DB,AL]:ordonner et ranger une suite de nbr ds un array...

Message par evereal » 09 Mars 2017 12:11

Je te copie colle l'algorithme Fisher–Yates shuffle.

Code : Tout sélectionner

function shuffle(array) {
  var currentIndex = array.length, temporaryValue, randomIndex;

  // While there remain elements to shuffle...
  while (0 !== currentIndex) {

    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;

    // And swap it with the current element.
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }

  return array;
}
Cet algorithme va passer dans tt le tableau et inverser la position entre un élément aléatoire et la fin de ton tableau, au final tu aura un tableau mélangé aléatoirement.
Par contre ca modifie ton tableau de base, si jamais tu dois garder l'original qq part, pense a dupliquer ton tableau avant d'appeler la méthode
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Verrouillé

Revenir vers « (Js) Javascript »