ORLOV JEUX

Blog · Brasslight Slots ·

Comment un générateur aléatoire choisit chaque tour

Un ordinateur ne peut pas lancer de dés, donc il suit une règle qui produit des nombres se comportant comme des dés. La graine, l'état et la correspondance sont les trois idées qui expliquent chaque rotation.

Derrière chaque rotation de machine à sous, il y a un court morceau de code qui produit un nombre, et ce nombre décide où s'arrête chaque rouleau. Cet article explique comment fonctionne ce type de générateur en général, à partir d'un modèle jouet assez petit pour être calculé à la main. Le générateur ci-dessous est inventé pour le calcul. La fiche Google Play pour Brasslight Slots ne dit pas comment le jeu choisit ses résultats, donc rien ici ne décrit le code de cette application. Il décrit la méthode standard.

Pseudo-aléatoire, pas aléatoire

Un ordinateur suit des instructions, il ne peut donc pas lancer une pièce. Ce qu'il peut faire, c'est exécuter un générateur pseudo-aléatoire de nombres (PRNG) : une règle fixe qui transforme un nombre en le suivant, de sorte que la suite paraisse sans motif pour tout test ordinaire. Trois éléments comptent.

  1. État. Le ou les nombres cachés que le générateur conserve entre deux tirages.
  2. Règle de mise à jour. Un calcul fixe qui fait avancer l'état et produit une sortie.
  3. Graine. L'état initial. Même graine, même suite, à chaque fois.

La graine est généralement tirée de quelque chose d'imprévisible, comme l'horloge système ou le réservoir d'entropie du système d'exploitation, afin que chaque session démarre à un point différent. Ensuite, c'est la règle qui fait le travail.

Un générateur que l'on peut dérouler sur papier

L'une des conceptions les plus anciennes est le générateur congruentiel linéaire : multiplier l'état par une constante, ajouter une autre constante, et garder le reste de la division par un module. Le nôtre utilise un module de 16 :

next = (5 × current + 3) mod 16

Partez de la graine 7. Alors 5 × 7 + 3 = 38, et 38 mod 16 = 6. Ensuite, 5 × 6 + 3 = 33, et 33 mod 16 = 1. Puis 5 × 1 + 3 = 8. En poursuivant, on obtient 6, 1, 8, 11, 10, 5, 12, 15, 14, 9 comme dix premières sorties. Dans ce modèle, la sortie est simplement l'état.

Faites-le tourner 16 pas et chaque nombre entier de 0 à 15 apparaît exactement une fois : 6, 1, 8, 11, 10, 5, 12, 15, 14, 9, 0, 3, 2, 13, 4, 7. La dix-septième sortie est de nouveau 6, et toute la suite se répète. La longueur de ce cycle est la période, et ici elle vaut 16.

Associer un nombre à un arrêt de rouleau

Le générateur fournit des nombres. Le jeu a besoin d'arrêts. Comme décrit dans bandes de rouleaux et arrêts, un rouleau est une liste de positions, donc la correspondance est une seule étape : prendre le nombre et l'utiliser comme position.

Supposons que chaque rouleau ait 16 arrêts, numérotés de 0 à 15. Une sortie de 6 signifie alors l'arrêt 6, et une sortie de 11 l'arrêt 11. Une rotation à cinq rouleaux prend cinq sorties à la suite, une par rouleau. À partir de la graine 7, la première rotation utilise 6, 1, 8, 11 et 10 pour les rouleaux 1 à 5, et la seconde utilise les cinq suivantes, 5, 12, 15, 14 et 9.

Spin 1 reel 1 6 reel 2 1 reel 3 8 reel 4 11 reel 5 10 Spin 2 reel 1 5 reel 2 12 reel 3 15 reel 4 14 reel 5 9 Rule: next = (5 × current + 3) mod 16, seed 7. Each output is a stop number.
Les dix premières sorties du générateur de démonstration, à partir de la graine 7, utilisées cinq par rotation comme numéros d'arrêt sur des rouleaux à 16 arrêts. La rotation 1 s'arrête aux arrêts 6, 1, 8, 11, 10 ; la rotation 2 aux arrêts 5, 12, 15, 14, 9.

Quand les nombres ne se divisent pas exactement

Les générateurs réels produisent des plages bien plus grandes, souvent 32 bits, soit 232 = 4,294,967,296 valeurs possibles. Si un rouleau a 20 arrêts, le raccourci courant consiste à prendre le reste de la division par 20. Mais 4,294,967,296 n'est pas un multiple de 20 : c'est 20 × 214,748,364 + 16. Ainsi, 16 arrêts reçoivent chacun 214,748,365 valeurs brutes et 4 arrêts en reçoivent 214,748,364. L'écart est d'une valeur sur environ 214 millions, trop petit pour compter, bien qu'un code soigneux l'élimine en rejetant les valeurs restantes et en tirant à nouveau.

Pourquoi une rotation ne prédit pas la suivante

Notre générateur de démonstration est un mauvais modèle d'indépendance. Dès qu'on voit une sortie, on connaît la suivante avec certitude : après 6 vient toujours 1. Quiconque connaîtrait la règle et verrait un seul nombre pourrait prévoir chaque rotation. Il n'a aussi que 16 états, donc il ne peut produire que 16 rotations différentes, une par état initial, alors que 16 rouleaux indépendants à 16 arrêts en permettraient 165 = 1,048,576.

Les générateurs sérieux corrigent ces deux problèmes par l'échelle et la conception. Le Mersenne Twister, générateur d'usage général très répandu, a une période de 219937 − 1, un nombre de plus de 6,000 chiffres, si bien qu'aucun joueur n'atteindra jamais la fin du cycle. En pratique, le résultat d'une rotation ne contient aucune information exploitable sur la suivante. C'est la propriété décrite dans pourquoi une machine n'est jamais « due »: la machine n'a aucune mémoire des résultats récents sur lesquels elle agirait, ni aucun calendrier qu'elle chercherait à rattraper.

Un générateur est une règle déterministe dotée d'un état caché. Sa sortie est convertie en numéro d'arrêt, un par rouleau, et pour l'équité des probabilités, ce qui compte est que chaque arrêt soit aussi probable et que la suite soit difficile à prévoir.

Ce que la correspondance fait aux probabilités

Le générateur ne connaît pas les symboles. Il ne produit que des numéros d'arrêt. La probabilité d'un symbole vient du nombre d'arrêts qui le montrent, c'est la règle « nombre sur longueur » de l'article sur les bandes de rouleau. Avec 16 arrêts dont 2 montrent un symbole, un rouleau s'y arrête avec une probabilité de 2 ÷ 16 = 12.5%.

Une vérification que vous pouvez faire

Choisissez une graine de 0 à 15 et exécutez la règle de démonstration pendant 16 pas : chaque nombre de 0 à 15 doit apparaître une fois. Repartez de la même graine et vous obtenez la même rotation, ce que signifie une graine.

Brasslight Slots: Casino Games est une machine à 5 rouleaux sur le thème des chats, avec 243 voies gagnantes, un bonus Yarn Pick, une roue de prix quotidienne et les tours Turbo et Auto. Elle n'utilise que des pièces virtuelles, sans argent réel, et les pièces et gemmes n'ont aucune valeur monétaire.

Disponible sur Google Play