logo

rand() ir srand() C++ kalboje

rand() funkcija yra C++ STL integruota funkcija, kuri apibrėžiama antraštės faile . rand() naudojamas atsitiktinių skaičių serijai generuoti. Atsitiktinis skaičius generuojamas naudojant algoritmą, kuris suteikia nesusijusių skaičių seriją, kai tik ši funkcija iškviečiama. Funkcija rand() naudojama C++, kad generuotų atsitiktinius skaičius diapazone [0, RAND_MAX).

RAND_MAX: Tai yra konstanta, kurios numatytoji vertė gali skirtis įvairiuose diegimuose, tačiau ji suteikiama bent 32767.



rand() sintaksė

int rand (void);>

Rand() parametrai

  • Ši funkcija nepriima jokių parametrų.

Grąžinama rando vertė ()

  • rand () grąžina pseudoatsitiktinį skaičių diapazone [0, RAND_MAX).

Tarkime, mes generuojame 5 atsitiktinius skaičius C++ su rand() pagalba kilpoje, tada kiekvieną kartą, kai kompiliuojame ir paleidžiame programą, mūsų išvestis turi būti ta pati skaičių seka.

rand() pavyzdys

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

>

>

Išvestis

1804289383 846930886 1681692777 1714636915 1957747793>

Rand() funkcijos sudėtingumas

Funkcijos rand() laiko ir erdvės sudėtingumas yra toks:

    Laiko sudėtingumas: O(1) Pagalbinės erdvės sudėtingumas: O(1)

Pastaba: Ši programa sukurs tą pačią atsitiktinių skaičių seką kiekvienoje programoje.

Žemiau pateikta programa yra funkcijos rand() įgyvendinimas, norint gauti reikšmę nuo 0 iki N-1

C++


mašinraščio foreach



// 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>

>

>

Išvestis

java konvertuoti į eilutę
83 86 77 15 93>

Žemiau pateikta programa yra funkcijos rand() įgyvendinimas, norint gauti reikšmę nuo Upper_Bound iki 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>

>

>

Išvestis

66 90 38 99 88>

srand ()

Funkcija srand() yra C++ STL integruota funkcija, kuri yra apibrėžta antraštės failą. srand() naudojamas atsitiktinių skaičių generatoriams inicijuoti. Funkcija srand() nustato pseudoatsitiktinių sveikųjų skaičių serijos sudarymo pradžios tašką. Jei srand() neiškviečiamas, rand() sėkla nustatoma taip, lyg srand(1) būtų iškviestas programos pradžioje. Bet kokia kita sėklos vertė nustato generatorių į kitą pradžios tašką.

srand() sintaksė

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

Įtraukia pseudoatsitiktinių skaičių generatorių, naudojamą rand() su reikšme sėkla.

Parametrai

  • sėkla: Naujos pseudoatsitiktinių skaičių sekos sėkla, kuri turi būti grąžinta nuosekliais iškvietimais į rand()

Grąžinimo vertė

  • Ši funkcija grąžina pseudo sugeneruotą atsitiktinį skaičių.

Pastaba: Pseudoatsitiktinių skaičių generatorius turėtų būti pradėtas naudoti tik vieną kartą, prieš iškviečiant rand() ir programos pradžioje. Jo nereikėtų pakartotinai sėti ar iš naujo pateikti kiekvieną kartą, kai norite sugeneruoti naują pseudoatsitiktinių skaičių paketą.

Įprasta praktika yra naudoti skambučio rezultatą srand(laikas(0)) kaip sėkla. Tačiau time() grąžina time_t reikšmę, kuri kaskart kinta, todėl pseudoatsitiktinis skaičius skiriasi kiekvienam programos iškvietimui.

rand() ir srand() su pavyzdžiu

rand () ir srand () palyginimas

srand() pavyzdys

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

>

>

Išvestis

1326865685 1413967981 1967280748 919663823>

Laiko sudėtingumas : O(N), kur N yra generuojamų atsitiktinių skaičių skaičius.

Pastaba: Ši programa sukurs skirtingą atsitiktinių skaičių seką kiekvienos programos vykdymo metu.

kibirkšties pamoka

Kaip srand() ir rand() yra susiję vienas su kitu?

srand() nustato sėklą, kurią rand naudoja atsitiktiniams skaičiams generuoti. Jei nepaskambinate srand prieš pirmąjį skambutį į randą, panašu, kad skambinote srand(1), kad nustatytumėte pradinį elementą į vieną.
Trumpai tariant, srand() – nustatykite rand() funkcijos sėklą .