Un programme de lancer de dés est seulement aussi bon que le pire des programmes :
- l'algorithme de retour des nombres aléatoires à la case départ
- le générateur de graines pseudo-aléatoires
La plupart sont suffisamment proches pour être meilleurs que des dés.
Comme les ordinateurs ne peuvent pas générer de nombres vraiment aléatoires, aucun rouleau de dé n'est vraiment aléatoire. Les nombres pseudo-aléatoires, cependant, peuvent être suffisamment aléatoires pour être plus aléatoires que les vrais dés.
Une étude récente a montré que la plupart des d6 commerciaux présentent un biais important. L'étude comportait quelques défauts, mais montrait généralement un biais en faveur des chiffres faibles sur la plupart des d6 commerciaux (dans le cas d'une entreprise, presque au point que les 1 représentaient 2/7 des jets de 1d6 !) Aucun lot individuel testé ne montrait une distribution vraiment égale.
Quelques détails techniques...
Il existe deux méthodes de renvoi de nombres aléatoires utilisées en programmation :
- Un retour fractionné sur un flotteur ou un double-flotteur (double). EX : 0.348826495
- Retour d'un nombre entier sur un int ou double-int (long). ex : 25565
Étant donné une fraction, la norme est de multiplier les côtés par la fraction retournée, ce qui donne un nombre fractionnaire entre 0 et les côtés ; arrondir vers le bas, ce qui donne un nombre entier de 0 à côtés-1, inclus ; puis ajouter 1, pour obtenir un nombre entier de 1 à côtés, inclus. En raison de la nature des fractions, la résolution est légèrement biaisée, mais elle est effectivement inférieure à la résolution sur les machines 16 bits. Sur certaines machines 8 bits utilisant la précision simple, il a un biais notable sur les grands types de matrices. L'utilisation de routines d'arrondi peut également avoir une incidence sur ce résultat ; la plus courante est une troncature, qui est mathématiquement acceptable. §
Étant donné un retour entier, le mode normal est d'effectuer une opération de modulus (en américain : trouver le reste). Puis d'ajouter 1. 1+ ( Retourner les côtés du modulus ). Ceci introduit un très léger biais sauf pour d4, d8 et d16. Ce biais est pour les nombres BAS, et est (maximum_return mod sides) / maximum_return. Sur les machines 8 bits, avec des retours entiers de simple précision, c'est (256 mod sides)/256, pour 0 pour d4, d8, et d16, 1/64 pour d6 et d10, 3/128 pour d10, et 1/16 sur d20. C'est 7/32 pour d100... sur une machine 16 bits, avec un retour long (entier 32 bits), c'est négligeable pour tous les dés en dessous de 10000 faces...
Mais, sans regarder les sources, les méthodes et les valeurs de retour ne peuvent pas être évaluées équitablement.
Cependant, la génération de nombres aléatoires varie grandement selon le système d'exploitation, l'algorithme de génération de nombres aléatoires utilisé, la méthode d'ensemencement des nombres aléatoires et même le langage de programmation utilisé.
En résumé...
Sur les machines récentes dotées d'une architecture 16 bits, l'asymétrie est généralement faible, voire minime. Sur les machines 32 bits, l'asymétrie est généralement faible et minuscule. Tant que vous en utilisez un pour une machine 16 bits ou plus récente, vous devriez être aussi aléatoire que des dés, si ce n'est plus.
§ la spécification pour les routines à virgule flottante d'Applesoft écrites par Wozniak est pour un 3 octets et 5 octets, utilisant un seul octet d'exposant, et une mantisse de 2 ou 4 octets.
Un flottant typique (conforme à l'IEEE) de nos jours a une longueur de 4 octets, utilisant une mantisse signée de 24 bits (pour ±2^23) et un exposant de 8 bits. En sortie de décimales, la limite de précision est d'environ 6 places. Un double (double précision en virgule flottante) est de 4 octets, 53 mantisse signée et 11 exposant. La précision quadruple est de 8 octets avec une mantisse signée de 113 bits et un exposant de 15 bits, donnant de manière fiable une précision décimale de 30+ places. Notez que dans les trois cas, le bit de signe est en tête, puis l'exposant, puis la mantisse. Les quads ne sont pas encore couramment disponibles.