Dans le temps les jeux de hasard étaient purement mécaniques. Les dés, la roulette, la roue de la fortune, les cartes, enfin ce genre de choses.
Maintenant, ces mêmes jeux se répandent sous forme électronique, et immanquablement, il faudra un générateur de nombres aléatoires (= un RNG).
Quel est l'impact de ce changement ?
Les casinos
A Las Vegas, et dans les casinos, on peut jouer aux machines à sous, au bandit manchot (one-armed bandit en anglais).
Les vieux anciens se souviendront qu'il fallait vraiment glisser une pièce, puis actionner manuellement le bras pour lancer les rouleaux qui se mettent à tourner, et s'arrêtent parfois sur le jackpot. On ramassait alors les pièces qui faisaient exprès un bruit infernal, pour les remettre dans la machine. On terminait la soirée avec les doigts tout noirs...

Tout ceci a été remplacé par des écrans: on est devenu feignasse, on appuie sur un bouton, on a l'impression que les rouleaux tournent, et parfois, cela s'arrête sur le jackpot.

Et bien le jackpot, c'est surtout l'exploitant de la machine qui l'a eu.
Car l'électronique, dans les années 70, a permis cette grande avancée:
comme c'est un programme électronique qui tourne,
alors on peut régler la distribution statistique des
résultats, et ainsi régler la part des gains qui restent à l'exploitant...
Je répète, pour ceux qui ne veulent pas comprendre:
le propriétaire de la machine à sous peut régler le pourcentage
d'argent qu'il ne rendra jamais. Il y a un bouton pour ça,
ou une application qui le programmera. Et donc on perd forcément sur
le long terme.
Tout ceci n'est pas nouveau, ça fait longtemps que les casinos gagnent à coup sûr, mais avec la mécanique, il fallait ruser avec les mises. A la roulette, on a 36 numéros, et on peut gagner 36 fois la mise, voire jouer directement pair/impair et doubler sa mise. On peut alors penser que tout retournera aux joueurs.
Sauf que.
Sauf qu'il existe un "zéro", ce qui permet à la banque de systématiquement gagner de l'argent d'une manière statistique. Et que les mises sont plafonnées, pas question de doubler à chaque tour jusqu'à gagner.
Les jeux vidéos
Pour éviter les scénes et séquences répétitives, ou simplement créer au départ d'un jeu une nouvelle configuration, on utilise fréquemment un RNG dans les programmes informatiques.
Ce sont quasi-systématiquement des nombres pseudo-aléatoire,
inutile de s'enquiquiner avec du vrai aléa, surtout que c'est
assez facile de trouver une graine différente pour chaque
machine en lisant des configurations de matériel, ou tout
simplement en hachant du fichier temporaire.
Encore plus simplement,
le programmeur utilise la jolie fonction "random" qu'il
trouvera dans ses librairies sans trop savoir ce qu'il
y a derrière, et en oubliant d'initialiser
(ce qui revient à donner une nouvelle graine).
Rien de bien particulier donc.
Dans ma grande bonté, je vous donne ici la routine que j'utilise pour un microcontrôleur 16 bit. Et aussi dans les jeux que je propose
// générateur aléatoire [0..256]
// entropie améliorée par injection des mesures pinOsc
unsigned int lfsr = 0xACE1;
unsigned int noise;
unsigned char random(void)
{
unsigned int val;
// Galois linear feedback shift register
// taps: 16 14 13 11;
// characteristic polynomial: x^16 + x^14 + x^13 + x^11 + 1
lfsr = (lfsr >> 1) ^ (-(lfsr & 1) & 0xB400);
lfsr ^= noise&0x0003; // dernier bit de bruit
val = lfsr&0xFF;
return(val&0xFF);
}
La graine provient par exemple d'une mesure de fréquence d'oscillations d'un capteur capacitif (un oscillateur avec une capa externe où on met son doigt). Mais elle est quand même initialisée pour le chargement du programme (variable lfsr).
Son énorme avantage est la taille ridicule du programme, et le calcul est quasi immédiat. Donc très peu de ressources.
Pour la petite histoire, ceux qui ont joué à Pacman sur les
machines dans les cafés le savent bien: le déplacement des
fantômes paraissait aléatoire, mais il ne l'était pas.
Probablement un générateur pseudo-aléatoire, toujours
initialisé de la même manière.
Ceci permettait de construire des stratégies de déplacement
gagnante, et donc de pouvoir jouer des heures avec
des scores formidables.

Suivez le guide pour l'épilogue à propos de ces RNG.