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.