Fonction sortir un entier aléatoire compris entre 2 entiers

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 000 fois - Téléchargée 30 fois

Contenu du snippet

Cette fonction vous sortira une nombre aléatoire compris en x et y inclus

elle marche avec les nombres négatifs

Source / Exemple :


function Aleatoire(Num1,Num2:integer):integer;
var
Num3:integer;
Diff:integer;
begin
//Num1 doit être plus petit que Num2
if Num1>Num2 then begin
 Num3:=Num2;Num2:=Num1;Num1:=Num3;
end;

//si c < 0 alors il faut decaler pour ke se soit >
Diff:=0;
if Num1<0 then Diff:=abs(Num1);
if Num2<0 then Diff:=Diff + abs(Num2);
Num1 := Num1+Diff;
Num2 := Num2+Diff;

Result := Random(Num2-Num1+1)+Num1;
Result := Result - Diff;

end;

A voir également

Ajouter un commentaire

Commentaire

cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
Houlala, c'est bien compliqué tout cela. Si on veut faire cette même fonction pour X<Y, il suffit juste d'écrire:

Randomize;
LeNombre:=Random(Y-X)+X;

Mais rien ne nous dit que Y sortira un jour. Dans tel cas il faudrait rajouter +1 dans la parenthèse.

Si on nous donne juste X et Y sans préciser si X<Y ou X>Y, alors il faut utiliser Min et Max. On obtient alors:

Randomize; //pas nécessaire si déjà appelé
LeNombre:=Random(Max(X,Y)-Min(X,Y))+Min(X,Y)

Même remarque avec le +1.

C'est déjà bien plus court...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.