Comment la roue reste équitable
Chaque lancer est décidé par le générateur de nombres aléatoires cryptographique de votre navigateur avant que la roue ne commence à tourner. Rien de ce que vous saisissez ne nous est envoyé. Cette page explique la méthode et présente le dernier audit automatisé.
Comment le gagnant est désigné
Le gagnant est tiré avec crypto.getRandomValues, le même générateur cryptographiquement sûr que celui utilisé par les navigateurs pour les clés de chiffrement.
Des nombres aléatoires de 32 bits sont convertis en position sur la roue par échantillonnage avec rejet : un nombre qui rendrait certaines entrées légèrement plus probables que d'autres est écarté et tiré à nouveau. Cela supprime le léger biais introduit par le calcul d'un reste.
Le gagnant est choisi en premier. L'animation fait ensuite tourner la roue pour qu'elle s'arrête dans le secteur du gagnant, en un point aléatoire éloigné de ses bords.
Pondérations
Une entrée écrite Pizza*3 a trois fois plus de chances de gagner qu'une entrée de poids 1, et son secteur est trois fois plus large. Les poids peuvent être des nombres entiers ou décimaux de 0,001 à 1 000 000.
Tirages vérifiables
Pour les concours et les tirages au sort, un tirage vérifiable permet à chacun de contrôler après coup que le résultat n'a pas été modifié.
- Avant le lancer, la page crée une graine secrète et affiche une empreinte SHA-256 de la graine, des entrées et de l'heure. Publiez cette empreinte, par exemple dans le chat de votre stream, avant de lancer la roue.
- Le lancer utilise un générateur construit à partir de la graine secrète, si bien que la graine et les entrées déterminent entièrement le gagnant.
- Après le lancer, la page révèle la graine dans un reçu de tirage. N'importe qui peut coller ce reçu dans la page de vérification, qui contrôle l'empreinte et recalcule le gagnant.
La méthode exacte
L'empreinte est le SHA-256 de ce texte UTF-8 : une ligne d'en-tête, l'heure de l'engagement, la graine, puis une ligne par entrée avec son poids, une tabulation et son libellé.
weeks-and-random-draw v1
committed_at: 2026-10-16T14:05:09.123Z
seed: 64 hexadecimal characters
3 Pizza
1.5 Sushi
- La graine se compose de 32 octets aléatoires issus de crypto.getRandomValues, écrits sous forme de 64 caractères hexadécimaux en minuscules.
- Le générateur produit des nombres de 32 bits à partir de SHA-256(octets de la graine suivis d'un compteur de 4 octets gros-boutiste), pour les compteurs 0, 1, 2 et ainsi de suite, en lisant chaque empreinte de 32 octets comme huit nombres gros-boutistes.
- Si tous les poids sont des nombres entiers et que le poids total est au plus égal à 2^32, le tirage prend le nombre de 32 bits suivant, l'écarte tant qu'il est supérieur ou égal à 2^32 − (2^32 mod total), puis garde le reste de sa division par le total.
- Sinon, il prend les deux nombres de 32 bits suivants a et b et calcule ((a >> 5) × 2^26 + (b >> 6)) ÷ 2^53, un nombre compris entre 0 inclus et 1 exclu, qu'il multiplie ensuite par le poids total.
- Le gagnant est la première entrée dont le cumul des poids est supérieur à ce nombre.
Un tirage vérifiable prouve que les entrées et le résultat n'ont pas été modifiés après la publication de l'empreinte. Il ne peut pas empêcher un organisateur de créer plusieurs empreintes en privé pour n'en publier qu'une qui lui convient ; publiez donc l'empreinte avant la clôture des participations, et n'en créez qu'une seule.
Dernier audit
Ces tests s'exécutent automatiquement à chaque modification du site. Dernière exécution : lundi 19 octobre 2026 18h31.
Tous les tests ont réussi.
| Scénario | Lancers | Khi-deux | Degrés de liberté | Valeur p | Résultat |
|---|---|---|---|---|---|
| 2 entrées égales | 1 000 000 | 0,86 | 1 | 0,3544 | Réussi |
| 7 entrées égales | 1 000 000 | 3,42 | 6 | 0,7549 | Réussi |
| 100 entrées égales | 1 000 000 | 125,45 | 99 | 0,0375 | Réussi |
| 1 000 entrées égales | 1 000 000 | 1081,73 | 999 | 0,0346 | Réussi |
| Mode Retirer le gagnant, 7 entrées, chaque position | 999 999 | 41,72 | 36 | 0,2360 | Réussi |
| Mode Sans répétition, 7 entrées, chaque position | 999 999 | 39,90 | 36 | 0,3007 | Réussi |
| Poids | Lancers | Écart maximal | Résultat |
|---|---|---|---|
| 1, 2, 3, 4 | 1 000 000 | 0,030 points de pourcentage | Réussi |
| 0.5, 1.5, 3, 0.25 | 1 000 000 | 0,050 points de pourcentage | Réussi |
10 000 lancers testés sur 10 000 se sont arrêtés sur le gagnant annoncé.
10 000 reçus de tirage aléatoires sur 10 000 ont été recalculés correctement, à la fois dans le navigateur et par une implémentation indépendante.
Version du moteur de la roue : d828d1f5c0c3.