Aller au contenu
FR

Générateur de Nombre Aléatoire

Définissez la plage, choisissez combien de nombres vous voulez et tirez. Activez « sans répétition » pour une tombola, où le même nombre ne doit pas sortir deux fois.

Pourquoi presque tous les générateurs sont un peu injustes

La façon habituelle de faire entrer un nombre aléatoire dans une plage consiste à prendre une valeur brute et à utiliser le reste de la division : prenez un octet de 0 à 255, divisez par 6, gardez le reste, et voilà un dé. Ça marche, et ce n’est pas tout à fait équitable. Il y a 256 octets possibles pour 6 faces, et 256 n’est pas divisible par 6 : il y va 42 fois et il reste 4. Ces quatre excédents tombent sur les faces 1 à 4, si bien qu’un dé construit ainsi sort 1, 2, 3 et 4 sur 43 des 256 octets, et 5 et 6 sur 42 seulement. Soit environ 2,4% de trop pour les faces basses : invisible en vingt lancers, parfaitement systématique en vingt mille.

Le correctif consiste à jeter les excédents. Ce générateur demande au navigateur un nombre de 32 bits et, s’il tombe dans le morceau du haut qui ne se divise pas exactement, il le rejette et en redemande un. Ce qui reste se divise exactement, donc chaque valeur de votre plage a la même chance. Pas presque la même, la même. Le coût est qu’un tirage prend parfois deux essais au lieu d’un, ce que personne ne perçoit et qui est le prix entier de l’équité.

Les nombres viennent de crypto.getRandomValues, la source cryptographique du navigateur, et non de Math.random. Math.random est rapide et convient pour mélanger une animation d’arrière-plan, mais c’est un algorithme prévisible : avec suffisamment de sorties, on peut déduire la suivante. Pour décider qui fait la vaisselle, c’est sans importance. Pour tirer un prix, c’est la différence entre un tirage et une formalité.

Une chose que cette page ne dira pas, c’est que le tirage est vérifiable. Il ne l’est pas, et aucun générateur de navigateur ne l’est : le résultat est calculé sur votre propre machine, et rien n’en prouve quoi que ce soit à quelqu’un qui ne regardait pas votre écran. Pour une classe, un jeu ou une décision entre amis, cela suffit largement. Pour un tirage avec de l’argent ou une obligation légale, il faut un processus avec témoins, pas une page web.

Questions fréquentes

Les nombres sont-ils vraiment aléatoires ?

Ils viennent de crypto.getRandomValues, que le navigateur alimente avec l’entropie du système d’exploitation : temps de souris, bruit matériel et autres. C’est la même source que celle des clés cryptographiques. Ce n’est pas une formule mathématique dont la sortie suivante se déduit des précédentes, ce qu’est justement Math.random.

Que fait l’option « sans répétition » ?

Elle tire chaque nombre au plus une fois, comme des billets sortis d’un chapeau sans y être remis. Six nombres de 1 à 60 sortent tous différents. Si vous demandez plus de nombres que la plage n’en contient (six différents entre 1 et 5, par exemple) l’outil refuse au lieu de vous en donner cinq en silence.

Le même nombre peut-il sortir deux fois ?

Oui, sauf si vous cochez « sans répétition ». Des tirages indépendants dans la même plage se répètent plus souvent qu’on ne l’imagine : tirez deux nombres de 1 à 10 et ils coïncident environ une fois sur dix. Ce n’est pas un défaut, c’est ce que signifie l’indépendance.

Est-ce suffisant pour un jeu-concours ou une tombola ?

Les nombres eux-mêmes sont aussi équitables qu’on peut les faire. Ce qu’une page web ne peut pas fournir, c’est une preuve pour les autres : le tirage a lieu sur votre ordinateur et ne laisse aucune trace vérifiable par un tiers. Pour un tirage informel, cela convient. Là où le résultat peut être contesté ou engage juridiquement, faites-le avec des témoins ou via un service conçu pour être audité.

Combien de nombres puis-je tirer d’un coup ?

Jusqu’à 1 000. La limite tient à ce qui tient sur un écran en restant lisible, pas au générateur. En tirer un million serait tout aussi rapide et parfaitement inutile à regarder.

Autres outils