logo

rand() un srand() C++ valodā

rand() funkcija ir C++ STL iebūvēta funkcija, kas ir definēta galvenes failā . rand() tiek izmantots, lai ģenerētu nejaušu skaitļu sēriju. Nejaušais skaitlis tiek ģenerēts, izmantojot algoritmu, kas dod virkni nesaistītu skaitļu ikreiz, kad tiek izsaukta šī funkcija. Funkcija rand() tiek izmantota C++, lai ģenerētu nejaušus skaitļus diapazonā [0, RAND_MAX).

RAND_MAX: Tā ir konstante, kuras noklusējuma vērtība dažādās implementācijās var atšķirties, taču tai ir piešķirta vismaz 32767.



rand() sintakse

int rand (void);>

rand() parametri

  • Šī funkcija neņem nekādus parametrus.

Randa() atgriešanās vērtība

  • rands () atgriež pseidogadījuma skaitli diapazonā [0, RAND_MAX).

Teiksim, mēs ģenerējam 5 nejaušus skaitļus programmā C++ ar rand() palīdzību cilpā, tad katru reizi, kad mēs kompilējam un palaižam programmu, mūsu izvadei jābūt vienai un tai pašai skaitļu secībai.

rand() piemērs

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

>

>

Izvade

1804289383 846930886 1681692777 1714636915 1957747793>

Funkcijas rand() sarežģītība

Funkcijas rand() laika un telpas sarežģītība ir šāda:

    Laika sarežģītība: O(1) Palīgtelpas sarežģītība: O(1)

Piezīme: Šī programma katrā programmas izpildē izveidos tādu pašu nejaušu skaitļu secību.

Tālāk redzamā programma ir funkcijas rand() ieviešana, lai iegūtu vērtību diapazonā no 0 līdz 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>

>

>

kaudze java
Izvade

83 86 77 15 93>

Tālāk redzamā programma ir funkcijas rand() ieviešana, lai iegūtu vērtību no Upper_Bound uz 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>

>

>

Izvade

66 90 38 99 88>

srand ()

Funkcija srand () ir C++ STL iebūvēta funkcija, kas ir definēta galvenes fails. srand() tiek izmantots, lai inicializētu nejaušo skaitļu ģeneratorus. Funkcija srand() nosaka sākumpunktu pseidogadījuma veselu skaitļu sērijas izveidošanai. Ja srand() netiek izsaukts, rand() sēkla tiek iestatīta tā, it kā srand(1) tiktu izsaukta programmas sākumā. Jebkura cita sēklu vērtība iestata ģeneratoru uz citu sākuma punktu.

srand() sintakse

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

Iesē pseidogadījuma skaitļu ģeneratoru, ko izmanto rand() ar vērtību sēklas.

Parametri

  • sēklas: Sēkla jaunai pseidogadījuma skaitļu secībai, kas jāatgriež, secīgi izsaucot rand()

Atdeves vērtība

  • Šī funkcija atgriež pseidoģenerētu nejaušu skaitli.

Piezīme: Pseidogadījuma skaitļu ģenerators ir jāiesē tikai vienu reizi, pirms jebkuriem rand() izsaukumiem un programmas sākumā. To nevajadzētu atkārtoti iesēt vai pārsūtīt ikreiz, kad vēlaties ģenerēt jaunu pseidogadījuma skaitļu sēriju.

Standarta prakse ir izmantot zvana rezultātu srand(laiks(0)) kā sēkla. Tomēr time() atgriež time_t vērtību, kas katru reizi mainās, un tāpēc pseidogadījuma skaitlis mainās katram programmas izsaukumam.

rand() un srand() ar piemēru

rand () un srand () salīdzinājums

srand() piemērs

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

>

>

Izvade

1326865685 1413967981 1967280748 919663823>

Laika sarežģītība : O(N), kur N ir ģenerējamo nejaušo skaitļu skaits.

Piezīme: Šī programma katrā programmas palaišanas reizē izveidos atšķirīgu nejaušu skaitļu secību.

Kā srand () un rand () ir saistīti viens ar otru?

srand () iestata sēklu, ko rand izmanto nejaušu skaitļu ģenerēšanai. Ja nezvanāt srand pirms pirmā rand zvana, tas ir tā, it kā jūs būtu piezvanījis srand(1), lai iestatītu sēklu uz vienu.
Īsumā, srand() — iestatiet sēklu funkcijai rand() .