logo

rand() et srand() en C++

Fonction Rand() est une fonction intégrée en C++ STL, définie dans le fichier d'en-tête . rand() est utilisé pour générer une série de nombres aléatoires. Le nombre aléatoire est généré à l'aide d'un algorithme qui donne une série de nombres non liés chaque fois que cette fonction est appelée. La fonction rand() est utilisée en C++ pour générer des nombres aléatoires dans la plage [0, RAND_MAX).

RAND_MAX : Il s'agit d'une constante dont la valeur par défaut peut varier selon les implémentations mais elle doit être d'au moins 32767.



Syntaxe de rand()

int rand (void);>

Paramètres de rand()

  • Cette fonction ne prend aucun paramètre.

Valeur de retour de rand()

  • rand() renvoie un nombre pseudo-aléatoire compris entre [0, RAND_MAX).

Disons que nous générons 5 nombres aléatoires en C++ à l'aide de rand() dans une boucle, puis chaque fois que nous compilons et exécutons le programme, notre sortie doit être la même séquence de nombres.

Exemple de rand()

C++








// C++ program to demonstrate> // the use of rand()> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create some sequence of> >// random numbers on every program run> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

scanner java
>

Sortir

1804289383 846930886 1681692777 1714636915 1957747793>

Complexité de la fonction rand()

La complexité temporelle et la complexité spatiale de la fonction rand() sont les suivantes :

logo java
    Complexité temporelle : O(1) Complexité spatiale auxiliaire : O(1)

Note: Ce programme créera la même séquence de nombres aléatoires à chaque exécution du programme.

Le programme ci-dessous est l'implémentation de la fonction rand() pour obtenir une valeur comprise entre 0 et N-1.

C++




// C++ program to demonstrate the> // use of rand() to get value> // in a range of 0 to N-1> #include> #include> using> namespace> std;> > int> main()> {> >int> N = 100;> >// This program will create some sequence of random> >// numbers on every program run within range 0 to N-1> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() % N <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

>

Sortir

83 86 77 15 93>

Le programme ci-dessous est l'implémentation de la fonction rand() pour obtenir une valeur de Upper_Bound à Lower_Bound.

C++




// C++ program to demonstrate> // the use of rand() to get value> // in a range of lb to ub> #include> #include> using> namespace> std;> > int> main()> {> >int> lb = 20, ub = 100;> >// This program will create some sequence of random> >// numbers on every program run within range lb to ub> >for> (>int> i = 0; i <5; i++)> >cout << (>rand>() % (ub - lb + 1)) + lb <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

js en cours de chargement

>

Sortir

66 90 38 99 88>

srand()

La fonction srand() est une fonction intégrée en C++ STL, définie dans En tête de fichier. srand() est utilisé pour initialiser des générateurs de nombres aléatoires. La fonction srand() définit le point de départ pour produire une série d'entiers pseudo-aléatoires. Si srand() n'est pas appelé, la graine rand() est définie comme si srand(1) était appelée au démarrage du programme. Toute autre valeur de seed règle le générateur sur un point de départ différent.

Syntaxe de srand()

void srand(  unsigned seed ); OR int  srand( unsigned int seed);>

Initialise le générateur de nombres pseudo-aléatoires utilisé par rand() avec la valeur graine.

Paramètres

  • graine: Une graine pour une nouvelle séquence de nombres pseudo-aléatoires à renvoyer par des appels successifs à rand()

Valeur de retour

  • Cette fonction renvoie un nombre aléatoire pseudo-généré.

Note: Le générateur de nombres pseudo-aléatoires ne doit être initialisé qu'une seule fois, avant tout appel à rand() et au début du programme. Il ne doit pas être ensemencé ou réensemencé à plusieurs reprises chaque fois que vous souhaitez générer un nouveau lot de nombres pseudo-aléatoires.

La pratique standard consiste à utiliser le résultat d'un appel pour sable(heure(0)) comme la graine. Cependant, time() renvoie une valeur time_t qui varie à chaque fois et donc le nombre pseudo-aléatoire varie pour chaque appel de programme.

rand() et srand() avec exemple

rand() et srand() comparaison

Exemple de srand()

C++




// C++ program to generate random numbers> #include> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create different sequence of> >// random numbers on every program run> > >// Use current time as seed for random generator> >srand>(>time>(0));> > >for> (>int> i = 0; i <4; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

>

différence entre un lion et un tigre
Sortir

1326865685 1413967981 1967280748 919663823>

Complexité temporelle : O(N), où N est le nombre de nombres aléatoires à générer.

Note: Ce programme créera une séquence différente de nombres aléatoires à chaque exécution du programme.

Comment srand() et rand() sont-ils liés l'un à l'autre ?

srand() définit la graine utilisée par rand pour générer des nombres aléatoires. Si vous n'appelez pas srand avant votre premier appel à rand, c'est comme si vous aviez appelé srand(1) pour définir la graine sur un.
En bref, srand() — Définir la graine pour la fonction rand() .