Guides pratiques

Technique

Comment TirageSimple produit un hasard équitable dans le navigateur

Web Crypto, biais de modulo et mélange de Fisher–Yates expliqués avec des exemples simples et les limites réelles de la méthode.

Par Mis à jour le 9 min de lecture

En bref : TirageSimple demande des valeurs aléatoires à crypto.getRandomValues(), les transforme en entiers sans biais de modulo, puis les utilise pour choisir ou mélanger. L’animation affiche le résultat ; elle ne le décide pas.

Pourquoi ne pas utiliser uniquement Math.random() ?

Math.random() suffit à de nombreuses animations, mais le langage JavaScript ne garantit pas un générateur cryptographiquement robuste. Web Crypto fournit au navigateur une interface conçue pour produire des octets aléatoires adaptés à des usages plus exigeants. TirageSimple l’utilise pour les décisions, nombres, dés, roues et mélanges réalisés localement.

« Cryptographiquement robuste » ne signifie pas « certifié par un organisme externe ». Cela décrit la source technique. Le site ne connaît pas les mécanismes internes de chaque système d’exploitation et ne fournit ni constat juridique ni audit indépendant.

Passer d’un grand entier à un choix de liste

Pour choisir parmi dix noms, on pourrait prendre un entier aléatoire et calculer son reste après division par dix. Le problème apparaît lorsque la quantité de valeurs possibles n’est pas exactement divisible par dix : certains restes peuvent survenir une fois de plus que d’autres. Cet écart est appelé biais de modulo.

Le moteur utilise un rejet simple. Il détermine la plus grande plage divisible par le nombre de choix, ignore les valeurs situées au-delà, puis applique le modulo. Une valeur rejetée déclenche une nouvelle lecture aléatoire. Chaque index final possède ainsi la même quantité de valeurs sources.

Exemple miniature

Avec une source fictive allant de 0 à 7 et trois choix, les restes de 0 à 5 sont équilibrés ; 6 et 7 sont rejetés. Chaque choix correspond alors exactement à deux valeurs.

Comment une liste entière est mélangée

Le mélange de Fisher–Yates part de la fin de la liste. Pour chaque position, il choisit uniformément une position comprise entre zéro et la position courante, puis échange les deux éléments. Le processus continue jusqu’au début. Si chaque choix d’index est uniforme, toutes les permutations possibles ont la même probabilité.

Tirer plusieurs gagnants sans remise revient à mélanger puis à prendre les premières positions, ou à effectuer des sélections successives en retirant chaque résultat. TirageSimple centralise cette logique afin que les différents outils n’emploient pas chacun une méthode approximative.

La roue ne choisit pas en ralentissant

Sur une roue physique, la force du lancer et les frottements déterminent la case finale. Dans l’outil web, le moteur choisit d’abord l’index gagnant. L’animation calcule ensuite une rotation qui termine sur ce segment. Un écran lent ou une baisse de fréquence d’image peut rendre le mouvement moins fluide, mais ne modifie pas le gagnant déjà obtenu.

Un tirage est-il reproductible ?

Pas avec le simple résultat fourni par Web Crypto. Pour reproduire exactement une sélection, il faudrait publier avant le tirage un engagement sur les données, utiliser une graine définie par une procédure vérifiable et documenter l’algorithme avec sa version. Une graine révélée après coup n’empêcherait pas l’organisateur d’en essayer plusieurs.

TirageSimple privilégie actuellement une sélection immédiate et robuste plutôt qu’une fausse promesse de reproductibilité. Un compte rendu partageable montre les paramètres et le résultat, mais ne constitue pas une preuve cryptographique de type « commit-reveal ».

Ce que le traitement local change pour la confidentialité

Dans les outils classiques, la liste saisie, le mélange et le résultat sont calculés dans le navigateur. Il n’est pas nécessaire d’envoyer les noms à un serveur TirageSimple. Le stockage local peut retenir certaines préférences sur l’appareil ; il peut être effacé depuis le navigateur.

Les connecteurs de réseaux sociaux font exception, car une API officielle doit être interrogée par un service backend et protégée par des quotas. Cette différence est indiquée sur les pages concernées et détaillée dans la politique de confidentialité.

Les limites qui restent du côté de l’organisateur

Un excellent générateur ne corrige pas une liste biaisée. Si certaines personnes manquent, si les doublons sont incohérents ou si les critères changent après la clôture, chaque index peut être techniquement équitable tout en produisant une procédure contestable. La préparation, la publication des règles et la conservation d’un compte rendu restent essentielles.

  • Web Crypto fournit la matière aléatoire au navigateur.
  • Le rejet évite le biais lors de la conversion en intervalle.
  • Fisher–Yates mélange sans favoriser une position.
  • L’animation n’influence pas le résultat.
  • Aucune certification externe n’est revendiquée.

Tester la roue aléatoire

Source technique

La spécification Web Cryptography du W3C définit la méthode qui fournit les valeurs aléatoires. Les explications sur le rejet, le mélange et la roue décrivent ensuite l’implémentation des outils locaux de TirageSimple. Elles ne constituent pas un audit externe du service.