Bonsoir.
Cela fait longtemps que je me pose le problème suivant. Étant donnés 10 conteneurs, on veut placer 10 éléments différents, chaque conteneur devant avoir un et un seul élément. La répartition doit être aléatoire. (fonction Rand...)
Mon but, c'est d'avoir un algorithme non récursif qui fasse ce travail avec la complexité la plus petite possible...
Comme je suis plutôt débutant, mon premier test, c'était d'effectivement faire pleins d'appels à la fonction Rand jusqu'à obtenir un élément qui n'est pas apparu auparavant. Très très peu efficace.
Mon deuxième test, c'est d'attribuer 10 nombres réels au hasard aux 10 éléments et comme je dispose de la fonction "trier en ordre croissant", il me suffit de faire ce tri, et d'identifier... Par exemple, pour 3 conteneurs A, B et C et 3 éléments 1,2 et 3, la fonction Rand me donne A: 2.4890, B: 7.6850 et C: 5.4098. Alors dans un tableau à part, je place 2.4890,7.6850 et 5.4098, que je trie. On a alors 2.4890, 5.4098 et 7.6850. Alors, dans mon tableau final, je fais une recherche d'éléments qui me permet d'obtenir une répartition aléatoire : [1;3;2]...
Algo moyennement efficace tout de même
J'espère avoir été clair^^
Je voudrais vous demander comment établir un algorithme qui réponde au problème. J'aurais besoin d'un algo non récursif, mais si vous en avez un récursif, pour l'info, je suis preneur !
Partager