21/04/2023
Découverte : Fisher-Yates shuffle
📖📖📖📖📖
Le Fisher-Yates shuffle (aussi connu sous le nom de Knuth shuffle) est un algorithme de mélange (ou shuffle) utilisé pour mélanger aléatoirement une liste. Il a été inventé par Ronald Fisher et Frank Yates en 1938 et popularisé par Donald Knuth dans son livre "The Art of Computer Programming".
L'algorithme fonctionne en itérant sur la liste depuis la fin jusqu'au début, et pour chaque élément, en choisissant aléatoirement un index dans la partie non mélangée de la liste et en échangeant la position de l'élément courant avec l'élément à l'index choisi.
Voici un exemple de code en C # qui implémente le Fisher-Yates shuffle :
```csharp
List numbers = new List{ 1, 2, 3, 4, 5 };
Random rng = new Random();
int n = numbers.Count;
while (n > 1) {
n--;
int k = rng.Next(n + 1);
int value = numbers[k];
numbers[k] = numbers[n];
numbers[n] = value;
}
```
Dans cet exemple, nous créons une liste d'entiers et un objet `Random` pour générer des nombres aléatoires. Nous utilisons ensuite l'algorithme Fisher-Yates pour mélanger la liste. La variable `n` représente le nombre d'éléments non mélangés dans la liste. À chaque itération, nous choisissons un index aléatoire `k` entre 0 et `n`, et échangeons l'élément à l'index `k` avec l'élément à l'index `n-1`. En fin de compte, cela produit une liste mélangée aléatoirement.
👏