Fonction rand() en langage C

Rand Function C Language



En langage C, le ligne() la fonction est utilisée pour Générateur de pseudo-numéros (PRNG) . Les nombres aléatoires générés par la fonction rand() ne sont pas vraiment aléatoires. C'est une séquence qui se répète périodiquement, mais la période est si grande que nous pouvons l'ignorer. Les ligne() fonctionne en mémorisant une valeur de départ qui est utilisée pour calculer le prochain nombre aléatoire et la prochaine nouvelle graine. Dans cet article, nous allons discuter en détail de la façon dont des nombres aléatoires peuvent être générés à l'aide du ligne() fonction. Alors, commençons!

En tête de fichier:

stdlib.h







Syntaxe:

int rand (vide)



Valeurs de retour :

Cette fonction renvoie le prochain nombre pseudo-aléatoire de la série. La valeur de plage de la série de nombres est comprise entre 0 et RAND_MAX. RAND_MAX est une macro définie dans stdlib.h fichier d'en-tête, dont la valeur est la valeur maximale, qui peut être renvoyée par la fonction rand(). La valeur de RAND_MAX est supérieure mais pas inférieure à 32767 selon les bibliothèques C.



//Exemple1.c

#comprendre
#comprendre

entierprincipale()
{

entierje;

imprimer ('10 nombres aléatoires => ');

pour(je=0;je<dix;je++)
{
imprimer ('%ré ', ligne ());
}

imprimer (' ');
revenir 0;
}


Dans Example1.c, nous appelons la fonction rand() à chaque itération de la boucle for et affichons la valeur de retour de la fonction. La séquence de valeurs de la fonction rand() est la même à chaque fois que nous exécutons le programme. Par défaut, la graine de la fonction rand est définie sur 1.





Nous pouvons définir la graine pour la fonction rand en utilisant le srand() fonction. La graine ne peut être réglée qu'une seule fois, et avant la première fois ligne() appel de fonction.

fonction srand() :

En tête de fichier:

stdlib.h



Syntaxe:

int srand (graine int non signée)

Arguments:

Cette fonction prend 1 argument

la graine: Une valeur entière utilisée comme germe pour une nouvelle série de nombres pseudo-aléatoires.

Valeurs de retour :

Rien

//Exemple2.c

#comprendre
#comprendre
#comprendre

entierprincipale()
{

entierje;

srand ( temps (0));

imprimer ('10 nombres aléatoires => ');

pour(je=0;je<dix;je++)
{
imprimer ('%ré ', ligne ());
}

imprimer (' ');
revenir 0;
}


Dans Example2.c, nous avons utilisé la fonction srand() pour définir la graine initiale de la séquence de nombres aléatoires générée par la fonction rand(). Chaque fois que le programme est exécuté, une séquence différente est générée. Dans srand(), la fonction time(0) (déclarée dans heure.h fichier d'en-tête) est utilisé comme une graine. Cette fonction time(0) renvoie le nombre de secondes écoulées depuis l'époque (00:00:00, 1er janvier 1970). Cela peut toujours produire les mêmes séquences si vous exécutez le programme dans la même seconde.

//Exemple3.c

#comprendre
#comprendre
#comprendre

entierprincipale()
{

entierje;

srand ( temps (0));

imprimer ('10 nombres aléatoires entre 1 et 10=> ');

pour(je=0;je<dix;je++)
{
imprimer ('%ré ',( ligne () %dix) + 1);
}

imprimer (' ');
revenir 0;
}


Dans Example3.c, nous avons vu comment des nombres aléatoires peuvent être générés entre 1 et 10.

//Exemple4.c

#comprendre
#comprendre
#comprendre

entierprincipale()
{

entierje,max,min;

imprimer ('Entrez la valeur min => ');
scanf ('%ré', &min);
imprimer ('Entrez la valeur max => ');
scanf ('%ré', &max);

si(min>max)
{
imprimer ('La valeur minimale est supérieure à la valeur maximale ');
revenir 0;
}

srand ( temps (0));


imprimer ('10 nombres aléatoires entre %d et %d=> ',min,max);

pour(je=0;je<dix;je++)
{
imprimer ('%ré ',( ligne () % (max-min+1)) +min);
}

imprimer (' ');
revenir 0;
}


Dans Example4.c, nous avons pris la plage de l'utilisateur et généré un nombre aléatoire dans cette plage. La formule est : rand ()% (max - min +1)) + min

//Exemple5.c

#comprendre
#comprendre
#comprendre

entierprincipale()
{

entierje;

srand ( temps (0));

imprimer ('10 nombres aléatoires entre 0.0 et 1.0=> ');

pour(je=0;je<dix;je++)
{
imprimer ('%F ',((flotter) ligne () /RAND_MAX));
}

imprimer (' ');
revenir 0;
}


Dans Example5.c, nous avons vu comment générer des nombres aléatoires entre float 0.0 et 1.0. La formule est : (float)rand() /RAND_MAX)

//Exemple6.c

#comprendre
#comprendre
#comprendre

entierprincipale()
{

entierje;
flottermax,min;

imprimer ('Entrez la valeur min => ');
scanf ('%F', &min);
imprimer ('Entrez la valeur max => ');
scanf ('%F', &max);

si(min>max)
{
imprimer ('La valeur minimale est supérieure à la valeur maximale ');
revenir 0;
}

srand ( temps (0));

imprimer ('10 nombres aléatoires entre %f et %f => ',min,max);

pour(je=0;je<dix;je++)
{
imprimer ('%F ',min+ ((flotter) ligne () /(RAND_MAX/(max-min))));
}

imprimer (' ');
revenir 0;
}


Dans Example6.c, nous avons pris la plage de l'utilisateur et généré un nombre aléatoire dans cette plage (tous deux inclus). La formule est : min + ((float)rand() /(RAND_MAX/(max – min)))

Conclusion:

Dans cet article, nous avons appris comment générer des nombres aléatoires en utilisant le ligne() et srand() fonction. Il n'y a aucune garantie sur la qualité des nombres aléatoires générés par la fonction rand, mais c'est assez bon pour une utilisation occasionnelle.