Souvent dans nos créations, nous avons besoin de générer un ou des nombres aléatoires. Mais savez-vous vraiment comment cela fonctionne ? Est ce vraiment le pur fruit du hasard ?

Essayons de décortiquer un peu ce principe simplement…

Nombres aléatoires : Une science ?

En voilà une bonne question.  Il faut savoir que les nombres aléatoires sont à chaque instant autour de nous, dans notre vie quotidienne. Ils sont utilisés par exemple en cryptographie, sécurité informatique, parapsychologie, simulation, ils sont partout.

Mais comment sont ils déterminés ? Nous n’allons pas faire ici un cours de physique ou mathématiques (beurk !) , mais essayons de savoir un peu comment cela fonctionne. Il faut en réalité créer un générateur. Il existe plusieurs méthodes pour générer des nombres aléatoires, certaines portent même le nom de leur auteur.

Une façon (parmi tant d’autres) assez simple de créer un générateur est de prendre un nombre. On calcule le carré de ce nombre et on prend les chiffres du milieu comme résultat. C’est la méthode Von Neumann.

Exemple : on prend un nombre au hasard disons 514. Je l’élève au carré donc 514²  = 264196 je prends pour résultat les nombres au milieu à savoir : 6419  ce qui donne le premier nombre, ensuite je prend ce résultat et je recommence pour avoir un second nombre, et ainsi de suite… Et ces résultats que nous obtenons on les appelle des graines qui vont nous servir justement à avoir des séquences aléatoires de nombres à chaque fois qu’on appliquera la méthode. Ainsi le premier nombre généré, devient la graine du second et ainsi de suite…

Il existe bien entendu pleins de méthodes, provenant de formules mathématiques diverses qui permettent de générer de manière différentes avec une ou sans fourchette donnée des suites pseudo aléatoires à partir d’une graine.

Comme vous pouvez le voir, ce n’est pas les méthodes qui manquent.

Dés

Semer des graines et récoltez !

C’est bien joli tout cela, mais comment cela se passe en programmation ? avec Construct 2 par exemple.

Généralement en informatique on utilise une génération de nombres pseudo aléatoires (bien entendu…). En réalité ce n’est pas complètement aléatoire, puisque les suites de nombres sont calculées en fonction d’une graine comme nous l’avons vu tout à l’heure (appelée seed pour les intimes).

On donne à notre programme une graine, qui représente un nombre et en fonction de celle-ci, le programme va générer une suite. C’est pour cela que nous employons le terme pseudo aléatoire car ce n’est pas complètement le hasard,  et le résultat de cette technique dépend bien entendu de la qualité de la graine, afin d’éviter d’avoir deux fois la même suite.

 

Construct 2 ou la graine perdue

Je vois d’ici vos yeux qui s’éveillent pour certains. Vous comprenez peut être mieux pourquoi lorsque vous demandez une suite de nombres aléatoires, si vous recommencez l’opération une seconde fois, vous avez toutes les chances de retomber sur la même suite. La raison est que la graine qui sert à générer la suite reste la même pendant tout le programme.

Donc pour éviter cela à chaque tirage de nombre il faut générer une nouvelle graine ! Et vous êtes sur que votre suite sera différente à chaque coup.

Et quelle graine prendre ? Pour des raisons évidentes et de facilité généralement on prend comme graine, le temps écoulé depuis le lancement du programme. Cette valeur change tout le temps et c’est donc l’idéale pour générer des nombres pseudo aléatoires. Et dans Construct 2 par exemple comment fait on ?

 

Les Plugins sont tes amis

Pour palier à ce problème il existe quelques plugins pour Construct 2 qui permettent de générer des graines  à chaque tirage.

Je peux vous donner comme exemple RandomPlus qui fait très bien ce travail. Cliquez ici pour en savoir plus sur ce plugin. D’ailleurs vous aurez également via ce lien accès à d’autres plugins qui ont la même finalité.

Voilà ! Amusez vous bien : Que les dés de la chance soient avec vous !