De nombreux outils en ligne ne sont pas vraiment aléatoires. Par exemple, trier une liste avec un comparateur naïf de type Math.random() - 0.5 produit un mélange présentant un biais mesurable. Ce guide explique pourquoi le tirage au sort utilise plutôt la source aléatoire cryptographique du navigateur, la différence entre un tirage avec et sans doublons, et l’importance d’un traitement entièrement local, qu’il s’agisse d’une tombola au bureau ou d’une sélection plus sensible.
Pourquoi utiliser crypto.getRandomValues plutôt que Math.random ?
La spécification de Math.random() ne garantit ni la sécurité cryptographique ni une distribution uniforme entre les navigateurs et les moteurs JavaScript. De plus, choisir un indice avec Math.floor(Math.random() * n) en utilisant le modulo naïvement peut créer un biais faible, mais réel, en faveur des indices les plus bas. En combinant crypto.getRandomValues et l’échantillonnage par rejet — les tirages hors plage sont écartés au lieu d’être réduits directement par modulo — on obtient un résultat sans biais. Les navigateurs utilisent cette même catégorie de source aléatoire pour générer des clés de chiffrement.
Tirage avec ou sans remise
Les onglets Tirer au sort et Plusieurs sélectionnent une partie de votre liste. Lorsque l’option Sans doublons est activée, chaque entrée tirée est retirée de la liste avant le tirage suivant : un même élément ne peut donc pas être choisi deux fois. Si vous demandez plus de tirages uniques que la liste ne contient d’entrées, l’outil signale une erreur de validation au lieu de répéter un tirage. Réduisez le nombre de gagnants, ajoutez des entrées ou désactivez l’option Sans doublons.
Explication du mélange de Fisher–Yates
L’onglet Mélanger — ainsi que la logique utilisée pour un tirage multiple sans doublons — repose sur l’algorithme de Fisher–Yates. En partant de la dernière position, l’algorithme l’échange avec une position précédente choisie au hasard, puis recule d’une position et recommence. Chacun des N! ordres possibles a ainsi la même probabilité d’apparaître, contrairement au tri naïf avec un comparateur aléatoire, qui favorise certaines séquences.
Quand utiliser chaque mode ?
Utilisez Tirer au sort pour désigner un seul gagnant, par exemple le grand prix d’une tombola ou la personne qui commence. Utilisez Plusieurs pour désigner plusieurs gagnants ou créer une liste restreinte ; activez Sans doublons dès qu’une même personne ou un même élément ne doit pas gagner deux fois. Utilisez Mélanger pour randomiser une séquence entière — ordre de passage, attribution des équipes ou ordre d’une liste de lecture — plutôt que d’en sélectionner une partie.