Un algorithme fort simple mais de plus en plus rare dans les livres, s'est le fonctionnement d'une fonction de générateur aléatoire. Je n'ai, entre autre, trouvé la formule dans aucun livre à l'exception de «ALGORITHMS, 1983, Edition Addison-Wesley, par Robert Sedgewick, page 33 à 44». Voici un petit programme inspiré de se livre, permettant d'effectuer la génération de nombre aléatoire statique en PHP:
Essayer maintenant !
- <?php
- define("m",100000000);
- define("ml",10000);
- define("b",31415821);
- $a=1;
-
- function Mult($p,$q) {
- $pl=intval($p / ml);
- $p0=$p % ml;
- $ql=intval($q / ml);
- $q0=$q % ml;
- return ((($p0*$ql+$pl*$q0) % ml)*ml+$p0*$q0) % m;
- }
-
- function Random() {
- global $a;
- $a=(Mult($a,b)+1) % m;
- return $a;
- }
-
- echo "Génération de 10 nombres aléatoires statique:<BR>";
- for($I=1;$I<=10;$I++) echo Random()."<BR>";
- ?>
on obtiendra le résultat suivant:
Génération de 10 nombres aléatoires statique:31415822
40519863
62952524
25482205
90965306
70506227
6817368
12779129
29199910
45776111
Le résultat est toujours le même parce que la variable «a» contient invariablement la valeur 1 à chaque démarrage du programme. Pour changer cette situation, il faudra donc affecter le résultat d'une fonction d'horloge, comme «GetTickCount», pour provoquer une effet de «Randomize Timer» du bon vieux BASIC.