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