Spinner.tools

La roue est-elle vraiment aléatoire ?

Oui. La part gagnante est choisie à l’instant du clic, avec la source aléatoire cryptographique du navigateur. Voici comment, et comment le vérifier vous-même.

La roue est aléatoire : chaque tour tire un nouveau nombre avec crypto.getRandomValues, la source aléatoire cryptographique intégrée au navigateur, et ce nombre seul décide de la part gagnante. La décision est prise à l’instant du clic, avant que la roue ne bouge, et rien dans l’animation, le timing ou les résultats précédents ne peut la changer. Le reste de cette page détaille chaque étape et se termine par un simulateur pour vérifier l’affirmation de vos propres yeux.

Ce qui se passe quand vous cliquez sur Tourner

Trois choses se produisent dans l’ordre, et l’ordre est tout l’enjeu. D’abord, le navigateur fournit un nombre aléatoire et le code s’en sert pour choisir une part. Ensuite, le code calcule un angle d’arrêt à l’intérieur de cette part et y ajoute plusieurs tours complets. Enfin, la roue s’anime depuis sa position actuelle jusqu’à cet angle, en ralentissant selon une courbe fixe jusqu’à l’arrêt.

  1. 1La part gagnante est choisie à l’instant du clic, avec les nombres aléatoires cryptographiques du navigateur.
  2. 2La roue fait plusieurs tours complets et ralentit selon une courbe fixe vers cette part.
  3. 3L’aiguille s’arrête à l’intérieur de la part, loin des bords : il n’y a donc jamais d’égalité.

Le tour que vous regardez est donc la relecture d’une décision déjà prise. Si vous pouviez mettre l’animation en pause une image après le clic et lire la variable qui contient la part choisie, elle indiquerait déjà quel prénom va gagner. La roue ne « décide pas en ralentissant », et il n’y a aucun moment pendant le tour où le hasard intervienne encore. Cliquer de nouveau pendant un tour ne fait rien ; le tirage suivant n’a lieu que quand vous lancez le tour suivant.

D’où vient le nombre aléatoire

Les navigateurs offrent deux façons d’obtenir un nombre aléatoire. Math.random est la plus courante, rapide et suffisante pour les jeux, mais c’est une suite pseudo-aléatoire que le navigateur ne promet pas de rendre imprévisible. crypto.getRandomValues est l’autre : elle est alimentée par le réservoir d’entropie du système d’exploitation, la même source que pour générer des clés de chiffrement et des jetons de session, et c’est celle qu’utilise la roue.

Le code demande un entier non signé de 32 bits, un nombre entier de 0 à 4 294 967 295, et le divise par 4 294 967 296. Cela donne une fraction de 0 inclus à 1 exclu, chaque valeur possible étant également probable. Si un navigateur très ancien n’avait aucune source cryptographique, le code se rabattrait sur Math.random plutôt que de refuser de tourner, mais tous les navigateurs actuels, sur ordinateur comme sur mobile, prennent en charge crypto.getRandomValues depuis des années ; en pratique, ce repli ne s’exécute jamais.

Une fraction est tirée par tour, et une seconde l’est uniquement pour choisir à quel endroit de la part gagnante l’aiguille doit s’arrêter. Aucune n’est réutilisée, stockée ni envoyée quelque part. Le simulateur plus bas sur cette page appelle la même fonction, ce qui explique que ses résultats soient un bon substitut de la vraie roue.

Comment un nombre aléatoire devient une part

Voyez la roue comme un cercle de 360 degrés avec l’aiguille fixe en haut. Avec huit entrées égales, chaque part couvre 45 degrés. Multipliez la fraction aléatoire par 360 et vous obtenez un angle ; divisez cet angle par 45 et arrondissez à l’entier inférieur, et vous avez la part. Une fraction de 0,564 devient 203 degrés, soit la part numéro cinq en comptant depuis l’aiguille dans le sens des aiguilles d’une montre.

0°45°90°135°180°225°270°315°203°

La roue est un cercle de 360°. Avec 8 entrées égales, chaque part couvre 45°. Le tirage au sort donne un angle, et la part n’est que l’angle divisé par la taille d’une part.

203° ÷ 45° = 4.51 → part 5

Avec des entrées pondérées, les parts n’ont pas la même taille : l’angle tiré est alors comparé à la plage propre à chaque part.

Les entrées pondérées changent la taille des parts, pas la méthode. Une entrée écrite Pizza*3 a un poids de 3 et une entrée ordinaire un poids de 1 : avec Pizza et trois entrées simples, le total est de 6 et la part de Pizza couvre 3 sixièmes du cercle, soit 180 degrés. Le code parcourt les entrées en additionnant les poids jusqu’à ce que le total cumulé dépasse le nombre aléatoire multiplié par le poids total, et l’entrée sur laquelle il s’arrête est la gagnante. La part dessinée à l’écran est dimensionnée par exactement le même calcul, ce qui explique que les chances que vous voyez soient les chances que vous avez. Une entrée de poids 0 n’a aucune étendue et ne peut jamais gagner, bien qu’elle reste visible dans la liste.

Pourquoi l’animation ne peut pas changer le résultat

Une fois la part choisie, le code choisit un angle d’arrêt quelque part entre 15 % et 85 % de la largeur de celle-ci : l’aiguille ne finit donc jamais sur une frontière et il n’y a jamais d’égalité à départager. Il ajoute ensuite des tours complets : quatre pour une durée Courte, sept pour Normale, onze pour Longue. La roue se déplace de son angle actuel vers la cible selon une courbe de ralentissement, rapide au début puis de plus en plus lente, et s’arrête exactement sur la cible.

Cette courbe a toujours la même forme. Un tour long n’est pas « plus aléatoire » qu’un tour court ; c’est la même décision avec plus de tours de décor devant elle. Le cliquetis quand l’aiguille passe chaque bord de part et les confettis à la fin sont produits par l’animation, pas par le tirage, et les désactiver ne change rien aux chances. Il en va de même pour les roues de plus de 200 entrées, où la page remplace la roue dessinée par une liste défilante : la cible est toujours choisie d’avance et le défilement est chronométré pour s’arrêter dessus.

La roue peut-elle être truquée ?

Seulement de façons que vous pouvez voir. Les chances de cette roue sont fixées par la liste et rien d’autre, et la liste est dans une zone de texte devant vous. Si un prénom apparaît deux fois, il a deux parts. S’il porte un *3, il a trois parts. Les deux sont visibles sur la roue sous forme de zones plus grandes ou répétées, et visibles sous forme de texte. Aucun réglage ne fait gagner une part plus souvent sans changer sa taille, et aucun serveur n’intervient qui pourrait substituer un résultat.

Pour un concours, voici la vérification à proposer à votre public : montrez la liste, montrez que chaque prénom apparaît une fois sans pondération, et tournez en plein écran. Si vous créez un lien de partage, toute la liste est encodée dans le lien lui-même : chacun peut donc l’ouvrir, voir la même roue et confirmer qu’il n’y avait rien de caché. La roue des prénoms est conçue pour cela, avec Retirer le gagnant pour qu’un prénom tiré ne puisse pas être tiré deux fois.

Deux choses que l’on prend parfois pour un biais méritent d’être nommées. Les petites séries paraissent irrégulières : huit prénoms et dix tours laisseront presque toujours un prénom non tiré et un prénom tiré deux fois, et c’est à cela que ressemble le hasard sur de petits nombres. Et l’on retient les tours qui collent à une histoire, comme le même élève interrogé deux jours de suite, en oubliant les centaines qui n’y collent pas. Le simulateur ci-dessous sert à remplacer ces deux impressions par des comptages.

Testez-le vous-même : le simulateur de tours

Le simulateur exécute le vrai tirage, la même fonction pickWeighted avec la même source cryptographique, autant de fois que vous le souhaitez, et ne saute que l’animation. Chaque barre représente l’une des huit parts égales et la ligne en pointillés indique le nombre que donnerait une répartition parfaitement égale. Essayez d’abord 100 tours, puis 100 000, et regardez les barres se resserrer autour de la ligne à mesure que les nombres grandissent.

Attendu par part: 125
–Camille
–Léa
–Hugo
–Inès
–Louis
–Manon
–Nathan
–Zoé
Même tirage que la vraie roue, simplement sans l’animation. La ligne en pointillés correspond à une répartition parfaitement égale.

Pour transformer l’image en nombre, le simulateur exécute un test du khi-deux. Il prend le compte de chaque part, soustrait le compte attendu, élève la différence au carré, la divise par le compte attendu et additionne les huit résultats. Un petit total signifie que chaque barre est proche de la ligne ; un grand total signifie qu’au moins une barre en est loin. Avec 1000 tours, le compte attendu est de 125 par part, et des barres entre environ 105 et 145 sont ordinaires.

La valeur p traduit ce total en question : si la roue était parfaitement équitable, à quelle fréquence produirait-elle, rien que par chance, une répartition au moins aussi inégale ? Une valeur p de 0,30 signifie qu’une roue équitable fait cela environ 30 % du temps, ce qui n’a rien d’inhabituel. La ligne de verdict utilise le seuil conventionnel de 0,05. À partir de ce seuil, le résultat est compatible avec une roue équitable. En dessous, la répartition est de celles qu’une roue équitable produit moins d’une fois sur vingt, ce qui est assez rare pour mériter un second regard.

Passer sous 0,05 ne veut pas dire que la roue est biaisée, et c’est la partie que l’on comprend mal. Par définition, une série équitable sur vingt y arrive : si vous appuyez vingt fois sur le bouton, attendez-vous à environ un avertissement. Une roue biaisée fait autre chose : elle échoue encore et encore, et c’est la même part qui dépasse à chaque fois. Avec huit parts, le total du khi-deux doit dépasser environ 14,1 pour que la valeur p passe sous 0,05 ; une roue qui favoriserait discrètement une part, même de quelques pour cent, dépasserait ce seuil à chaque série de 100 000 tours et afficherait une valeur p très inférieure à 0,001.

Si vous préférez vérifier la vraie roue plutôt qu’un simulateur, ouvrez une roue avec une liste courte, réglez la Durée du tour sur Courte et tournez cent fois. L’onglet Résultats garde tous les résultats de la session ; copiez-les, collez-les dans un tableur et comptez. Vous verrez le même comportement que dans les barres ci-dessus : des comptes qui oscillent autour d’une part égale, dérivent dans un sens différent à chaque session et ne se fixent jamais sur un favori.

La roue de la chance de la page d’accueil est la version généraliste de tout ce qui précède, avec pondération, roues enregistrées et liens de partage. Si vous n’avez besoin que d’un choix à deux issues équitable, la roue oui ou non alterne Oui et Non autour de la roue pour que les deux réponses aient toujours des chances identiques. Pour tirer des prénoms quand chaque tirage doit être équitable et vu comme tel, la roue des prénoms garde la trace de chaque résultat et retire les gagnants au fur et à mesure.

8 entréesDurée du tour

Questions fréquentes

La roue est-elle vraiment aléatoire ?

Oui. Chaque tour tire un nombre avec crypto.getRandomValues, la même source aléatoire que celle que les navigateurs utilisent pour les clés de chiffrement, et ce nombre seul décide de la part. L’animation démarre après la décision et ne fait qu’amener la roue jusqu’à la part choisie.

Une roue de la chance peut-elle être truquée ?

Pas par quelque chose que vous ne voyez pas. Les seuls moyens de modifier les chances sur cette roue sont d’ajouter une entrée plusieurs fois ou de lui donner un poids comme Nom*3, et les deux se voient : parts plus grandes sur la roue, texte dans la liste. Il n’y a ni réglage caché, ni serveur, ni compte qui pourrait favoriser une entrée.

Le moment du clic ou la durée du tour ont-ils de l’importance ?

Non. Le nombre aléatoire est tiré au moment du clic et la part est fixée à partir de là. Le réglage Durée du tour ne change que le nombre de tours que fait l’animation avant d’arriver ; Courte, Normale et Longue s’arrêtent sur la même part pour le même tirage.

Comment les entrées pondérées changent-elles les chances ?

La chance d’une entrée est son poids divisé par le poids total de la liste. Avec quatre entrées dont une de poids 3, cette entrée a 3 chances sur 6, soit 50 %, et sa part occupe la moitié de la roue. Le nombre aléatoire est comparé à la taille de ces parts : l’image dessinée et les vraies chances sont donc une seule et même chose.

Que signifie la valeur p dans le simulateur de tours ?

C’est la probabilité qu’une roue parfaitement équitable produise une répartition au moins aussi inégale que celle que vous venez de voir. Une valeur p de 0,05 ou plus signifie que le résultat est ordinaire pour une roue équitable. Une valeur inférieure à 0,05 est inhabituelle sans prouver un biais : environ une série équitable sur vingt y arrive par hasard, relancez donc.

Comment vérifier la vraie roue plutôt que le simulateur ?

Faites tourner une roue de quelques entrées cent fois ou plus et ouvrez l’onglet Résultats, qui garde tous les résultats de la session. Copiez la liste et comptez chaque entrée. Les nombres doivent rester proches d’une part égale et dériver dans des sens différents d’une session à l’autre, jamais systématiquement vers la même entrée.

La roue peut-elle s’arrêter sur la ligne entre deux parts ?

Non. Une fois la part choisie, l’angle d’arrêt est placé entre 15 % et 85 % de la largeur de cette part : l’aiguille s’arrête donc toujours nettement à l’intérieur. Le léger tremblement de l’aiguille quand elle passe les bords des parts n’est que de l’animation.

Plus de roues