Fonction Rand dans le langage C

Fonction Rand dans le langage C
Dans la langue C, le rand() La fonction est utilisée pour Pseudo Number Generator (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. Le rand() La fonction fonctionne en se souvenant d'une valeur de semence qui est utilisée pour calculer le prochain numéro aléatoire et la prochaine nouvelle graine. Dans cet article, nous allons discuter en détail de la façon dont les nombres aléatoires peuvent être générés en utilisant le rand() fonction. Alors, commençons!

En tête de fichier:

stdlib.H

Syntaxe:

int rand (vide)

Valeurs de retour:

Cette fonction renvoie le prochain numéro pseudo-aléatoire dans 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 retourner par la fonction Rand (). La valeur de Rand_max est plus grande mais pas moins de 32767 selon les bibliothèques C.

//Exemple 1.c
#inclure
#inclure
int main()

int i;
printf ("10 nombres aléatoires => \ n");
pour (i = 0; i<10;i++)

printf ("% d", rand ());

printf ("\ n");
retour 0;


Dans l'exemple1.C, nous appelons la fonction rand () dans chaque itération de la boucle et imprimez la valeur de retour de la fonction. La séquence de valeur 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 de la fonction Rand en utilisant le srand () fonction. La graine ne peut être définie qu'une seule fois, et avant la première fois rand() appel de fonction.

Srand () Fonction:

En tête de fichier:

stdlib.H

Syntaxe:

int srand (insigned int semence)

Arguments:

Cette fonction prend 1 argument

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

Valeurs de retour:

Aucun

// Exemple2.c
#inclure
#inclure
#inclure
int main()

int i;
srand (temps (0));
printf ("10 nombres aléatoires => \ n");
pour (i = 0; i<10;i++)

printf ("% d", rand ());

printf ("\ n");
retour 0;


Dans l'exemple2.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 du temps (0) (déclaré dans temps.H Fichier d'en-tête) est utilisé comme graine. Cette fois (0), la fonction renvoie le nombre de secondes écoulées depuis l'époque (00:00:00, 1er janvier 1970). Cela peut encore produire les mêmes séquences si vous exécutez le programme dans la même seconde.

// Exemple3.c
#inclure
#inclure
#inclure
int main()

int i;
srand (temps (0));
printf ("10 nombres aléatoires entre 1 et 10 => \ n");
pour (i = 0; i<10;i++)

printf ("% d", (rand ()% 10) + 1);

printf ("\ n");
retour 0;


Dans l'exemple3.c Nous avons vu comment des nombres aléatoires peuvent être générés entre 1 et 10.

// Exemple4.c
#inclure
#inclure
#inclure
int main()

int i, max, min;
printf ("Entrée Min Value =>");
scanf ("% d", & min);
printf ("ENTER MAX VALUE =>");
scanf ("% d", & max);
if (min> max)

printf ("La valeur min est supérieure à la valeur maximale \ n");
retour 0;

srand (temps (0));
printf ("10 nombres aléatoires entre% d et% d => \ n", min, max);
pour (i = 0; i<10;i++)

printf ("% d", (rand ()% (max - min +1)) + min);

printf ("\ n");
retour 0;


Dans l'exemple4.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
#inclure
#inclure
#inclure
int main()

int i;
srand (temps (0));
printf ("10 nombres aléatoires entre 0.0 et 1.0 => \ n ");
pour (i = 0; i<10;i++)

printf ("% f", ((float) rand () / rand_max));

printf ("\ n");
retour 0;


Dans l'exemple5.C, nous avons vu comment nous pouvons générer des nombres aléatoires entre le flotteur 0.0 et 1.0 La formule est: (float) rand () / rand_max)

// Exemple6.c
#inclure
#inclure
#inclure
int main()

int i;
float max, min;
printf ("Entrée Min Value =>");
scanf ("% f", & min);
printf ("ENTER MAX VALUE =>");
scanf ("% f", & max);
if (min> max)

printf ("La valeur min est supérieure à la valeur maximale \ n");
retour 0;

srand (temps (0));
printf ("10 nombres aléatoires entre% f et% f => \ n", min, max);
pour (i = 0; i<10;i++)

printf ("% f", min + ((float) rand () / (rand_max / (max - min))));

printf ("\ n");
retour 0;


Dans l'exemple6.C, nous avons pris la plage de l'utilisateur et généré un nombre aléatoire dans cette plage (les deux inclusif). La formule est: min + ((float) rand () / (rand_max / (max - min))))

Conclusion:

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