Hasard
En informatique, tout est programmation, il faut expliquer à l'ordinateur comment il doit procéder pour chacune de ses taches. Il ne connait que les ordres précis : "choisir un nombre entre 1 et 4" n'est pas comprehensible pour lui, il ne saura pas choisir, il lui faut une règle. (et oui c'est tres bête un ordinateur !)
Ainsi, même quand on veut générer une suite de nombre aléatoires... on est obligé de faire un programme et d'expliquer comment prendre au hasard... et je vous laisse imaginer combien c'est difficile !
Ce qui fait que rien n'est vraiment du hasard, on parle de générateur de nombres pseudo-aléatoires.
A quoi cela sert-il ?
En particulier pour tout ce qui est codage de données (cryptographie), donc c'est tres sensible et doit être le plus sécurisé possible.
Alors comment faire ?
Un petit programme de base, se contentera de prendre l'heure et la date à laquelle on lui a demandé un nombre aléatoire, multiplier la dizaine des secondes par le jour, diviser par la vitesse du processeur et ajouter la place qu'il reste sur le disque C... et hop on obtient un nombre aléatoire... mais qu'on aurait pu trouver relativement facilement donc qui n'a rien d'hasardeux ! (Et c'est tres mauvais de pouvoir deviner facilement comment on a obtenu le nombre, le code serait facile à décoder et tout le monde aurait accès aux secrets de la CIA !)
Des programmes plus perfectionnés vont utiliser les suites de Fibonacci (plutôt que de simples additions et multiplications), ou bien d'autres propriétés mathématiques, qu'ils vont combiner avec des propriétés plus aléatoires et surtout non prévisibles de la machine sur laquelle le programme tourne (temps entre deux acces au disque, taille de la mémoire vive, mouvement du pointeur de la souris, ...).
Le résultat est encore traité par une autre méthode (table de hachage, c'est un peu compliqué, si il y en a que ca interresse dites moi et je vous l'explique dans un autre article : le principe c'est que c'est pas parce qu'on a le résultat final et le nombre qu'on a donné au départ pour l'obtenir qu'on peut deviner ce qui s'est passé entre les deux !)
Et si on veut un nombre plus petit que 12 par exemple ?
pas de probleme, on peut (par exemple) utiliser le modulo, qezaco ?
Un petit outil mathématique tres simple celui ci !
0 modulo 12 =0
1 modulo 12 =1
2 modulo 12 =2
...
11 modulo 12 = 11
12 modulo 12 = 0
13 modulo 12 = 1
14 modulo 12 = 2
...
23 modulo 12 = 11
24 modulo 12 = 0
...
Ainsi tous les nombres modulo 12 sont entre 0 et 12 (exclus).
pour trouver à quoi correspond la modulo, il suffit de faire la division entière, le reste de la division est le modulo :
par exemple : 2458 modulo 12 = 10
2458 = 12 * 204 +10
Donc on peut avoir facilement des nombres dans l'intervalle que l'on souhaite !
si on veut un nombre plus petit que 50, on lancera notre générateur, puis on appliquera au resultat le modulo 50
Si on veut un nombre entre 50 et 90 : on a un intervalle de 40 entre les deux... donc on choisit un nombre plus petit que 40 et on ajoute 50...(le minimum du modulo me donne 0 et le maximum 39, si j'ajoute 50 : j'obtiens minimum 50 et maximum 89)
exemple :
mon pseudo generateur me donne 5825
je lui applique le modulo 40 : cela donne 25 (5825 = 40 * 145 +25)
j'ajoute 50 : j'obtiendrais 75 qui est bien compris entre 50 et 90...
pratique non ?
On verra le monde secret de la cryptographie, dans un prochain article :)