Ordonner les éléments d’un tableau au hasard

Il est souvent intéressant de déterminer aléatoirement l’ordre des éléments d’un tableau.
La fonction qui suit permet très simplement d’obtenir ce résultat : on lui soumet un tableau, elle parcourt ses éléments un à un puis ajoute ces derniers à un nouveau tableau, à une position au hasard. Le type de tableau doit être indiqué, il faut donc remplacer le mot type par String, int, float, etc., selon le besoin :

type[] shuffle(type[] origine){
  type[] resultat = new type[0];
  for(type s:origine){
     int pos = floor(random(resultat.length+1));
     resultat = (type[]) splice(resultat, s, pos);
  }
  return resultat;
} 

Dans l’exemple qui suit, le type de tableau choisi est String[] (chaîne de caractère).
Nous créons un tableau contenant les valeurs « 1 », « 2 », « 3 », « 4 », « 5 », puis, à dix reprises, nous mélangeons ce tableau.

void setup(){
  size(1024,768);
  String[] s = {"A", "B", "C", "D", "E"};
  for(int a=0;a<10;a++){
    s = shuffle(s); println(s); 
  }
}
  
String[] shuffle(String[] origine){
  String[] resultat = new String[0];
  for(String s:origine){
     int pos = floor(random(resultat.length+1));
     resultat = (String[]) splice(resultat, s, pos);
  }
  return resultat;
}

Le résulstat sera (par exemple) :

D B E C A
A E B C D
B D E C A
A D C E B
B D C E A
A C D E B
D C E B A
A E C B D
E D C B A
D A C B E

Leave a Reply