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