Chapitre 18 - Pseudohasard▲
Il est quelquefois nécessaire d'avoir recours à l'utilisation de valeurs de variables (scalaire ou réel) qui soient le fruit du hasard. Mais l'ordinateur n'est pas capable de créer du vrai hasard. Il peut cependant fournir des données dites pseudoaléatoires, c'est-à -dire issues de calculs qui utilisent des paramètres issus de l'horloge interne. On appelle cela un pseudohasard, car il est très difficile de déceler de l'ordre et des cycles dans la génération de ces valeurs pseudoaléatoires. Ainsi, on admettra que Turbo Pascal 7.0 offre la possibilité de générer des nombres aléatoires.
Avant l'utilisation des fonctions qui vont suivre, il faut initialiser le générateur pseudoaléatoire (tout comme il faut initialiser la carte graphique pour faire des dessins) avec la procédure Randomize. Cette initialisation est indispensable : en son absence, on obtiendra toujours la même séquence de nombres.
Syntaxe :
Randomize;
Randomize doit être appelée une seule fois, de préférence au début du programme principal.
On peut générer un nombre réel pseudoaléatoire compris entre 0 et 1 grâce à la fonction Random.
Syntaxe :
X := Random;
On peut générer un nombre entier pseudoaléatoire compris entre 0 et Y-1 grâce à la fonction Random(Y).
Syntaxe :
X := Random(Y);
Exemple :
Program
Exemple22;
Uses
Crt;
Const
Max = 100
;
Var
Test : Boolean
;
x, y : Integer
;
BEGIN
ClrScr;
Randomize;
y := Random(Max);
repeat
Write
('Entrez un nombre : '
);
ReadLn(x);
Test := (x = y);
if
test then
WriteLn('OK, en plein dans le mille.'
)
else
if
x > y then
WriteLn('Trop grand.'
)
else
WriteLn('Trop petit.'
);
until
Test;
ReadLn;
END
.
Dans ce programme Exemple22 (programme Chance typique des calculettes), on a génération d'un nombre pseudoaléatoire compris entre 0 (inclus) et une borne Max (exclue) définie comme constante dans la partie déclarative du programme : 0 <= nombre < Max. Ici, on prendra la valeur 100. L'utilisateur saisit un nombre, le programme effectue un test et donne la valeur true à une variable Boolean nommée Test si le nombre du joueur est correct; sinon, affiche les messages d'erreurs correspondants. Le programme fonctionne à l'aide d'une boucle repeat...until.