logo

rand() in srand() v C++

funkcijo rand(). je vgrajena funkcija v C++ STL, ki je definirana v datoteki glave . rand() se uporablja za ustvarjanje niza naključnih števil. Naključno število se ustvari z uporabo algoritma, ki ob vsakem klicu te funkcije poda niz nepovezanih števil. Funkcija rand() se v C++ uporablja za ustvarjanje naključnih števil v obsegu [0, RAND_MAX).

RAND_MAX: Je konstanta, katere privzeta vrednost se lahko razlikuje med implementacijami, vendar je odobrena vsaj 32767.



Sintaksa rand()

int rand (void);>

Parametri rand()

  • Ta funkcija ne sprejema nobenih parametrov.

Vrnjena vrednost rand()

  • rand() vrne psevdonaključno število v območju [0, RAND_MAX).

Recimo, da generiramo 5 naključnih števil v C++ s pomočjo rand() v zanki, nato pa mora biti vsakič, ko prevedemo in zaženemo program, naš rezultat isto zaporedje števil.

Primer 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;> }>

>

kdaj je bil izumljen prvi računalnik

>

Izhod

1804289383 846930886 1681692777 1714636915 1957747793>

Kompleksnost funkcije rand().

Časovna in prostorska kompleksnost funkcije rand() sta naslednji:

    Časovna kompleksnost: O(1) Kompleksnost pomožnega prostora: O(1)

Opomba: Ta program bo ustvaril isto zaporedje naključnih števil ob vsakem zagonu programa.

Spodnji program je implementacija funkcije rand() za pridobitev vrednosti v razponu od 0 do 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>

>

>

Izhod

83 86 77 15 93>

Spodnji program je implementacija funkcije rand() za pridobitev vrednosti od Upper_Bound do 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>

>

>

Izhod

66 90 38 99 88>

srand()

funkcija srand() je vgrajena funkcija v C++ STL, ki je definirana v naslovna datoteka. srand() se uporablja za inicializacijo generatorjev naključnih števil. Funkcija srand() nastavi začetno točko za izdelavo serije psevdonaključnih celih števil. Če srand() ni poklican, je seme rand() nastavljeno, kot da bi bil srand(1) poklican ob zagonu programa. Vsaka druga vrednost za seme nastavi generator na drugo začetno točko.

Sintaksa srand()

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

Seme generatorju psevdonaključnih števil, ki ga uporablja rand(), z vrednostjo seme.

Parametri

  • seme: Seme za novo zaporedje psevdonaključnih števil, ki jih vrnejo zaporedni klici rand()

Povratna vrednost

  • Ta funkcija vrne psevdogenerirano naključno število.

Opomba: Generator psevdonaključnih števil je treba zasesti samo enkrat, pred kakršnimi koli klici rand() in na začetku programa. Ne bi smeli biti večkrat zasejeni ali ponovno zasejeni vsakič, ko želite ustvariti novo serijo psevdonaključnih števil.

Standardna praksa je uporaba rezultata klica na srand(čas(0)) kot seme. Vendar pa time() vrne vrednost time_t, ki se vsakič spremeni, zato se psevdonaključno število spreminja za vsak klic programa.

rand() in srand() s primerom

rand() in srand() primerjava

Primer 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;> }>

>

>

Izhod

1326865685 1413967981 1967280748 919663823>

Časovna zapletenost : O(N), kjer je N število naključnih števil, ki jih je treba generirati.

Opomba: Ta program bo ob vsakem zagonu programa ustvaril drugačno zaporedje naključnih števil.

Kako sta srand() in rand() med seboj povezana?

srand() nastavi seme, ki ga uporablja rand za ustvarjanje naključnih števil. Če pred prvim klicem randa ne pokličete srand, je to tako, kot če bi poklicali srand(1), da nastavite seme na ena.
V kratkem, srand() — Nastavi seme za funkcijo rand(). .