logo

rand() en srand() in C++

rand() functie is een ingebouwde functie in C++ STL, die is gedefinieerd in het headerbestand . rand() wordt gebruikt om een ​​reeks willekeurige getallen te genereren. Het willekeurige getal wordt gegenereerd met behulp van een algoritme dat een reeks niet-gerelateerde getallen geeft wanneer deze functie wordt aangeroepen. De functie rand() wordt in C++ gebruikt om willekeurige getallen in het bereik [0, RAND_MAX) te genereren.

RAND_MAX: Het is een constante waarvan de standaardwaarde tussen implementaties kan variëren, maar deze mag minimaal 32767 zijn.

Syntaxis van rand()

int rand (void);>

Parameters van rand()

  • Deze functie gebruikt geen parameters.

Retourwaarde van rand()

  • rand() retourneert een pseudo-willekeurig getal in het bereik van [0, RAND_MAX).

Stel dat we in C++ 5 willekeurige getallen genereren met behulp van rand() in een lus, en elke keer dat we het programma compileren en uitvoeren, moet onze uitvoer dezelfde reeks getallen zijn.



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

>

Java sorteert een arraylist

>

Uitvoer

1804289383 846930886 1681692777 1714636915 1957747793>

Complexiteit van de functie rand().

De tijdcomplexiteit en ruimtecomplexiteit van de functie rand() zijn als volgt:

    Tijdcomplexiteit: O(1) Hulpruimtecomplexiteit: O(1)

Opmerking: Dit programma creëert bij elke programma-uitvoering dezelfde reeks willekeurige getallen.

Het onderstaande programma is de implementatie van de functie rand() om een ​​waarde te krijgen tussen 0 en 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>

>

>

Uitvoer

anders als Java
83 86 77 15 93>

Het onderstaande programma is de implementatie van de functie rand() om een ​​waarde van Upper_Bound naar Lower_Bound te krijgen.

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>

>

>

Uitvoer

66 90 38 99 88>

strand()

De functie srand() is een ingebouwde functie in C++ STL, die is gedefinieerd in header-bestand. srand() wordt gebruikt om willekeurige getalgeneratoren te initialiseren. De functie srand() stelt het startpunt in voor het produceren van een reeks pseudo-willekeurige gehele getallen. Als srand() niet wordt aangeroepen, wordt de rand()-seed ingesteld alsof srand(1) bij de start van het programma zou worden aangeroepen. Elke andere waarde voor zaad stelt de generator op een ander startpunt.

Syntaxis van strand()

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

Seeds de generator voor pseudo-willekeurige getallen die door rand() wordt gebruikt met de waarde zaad.

Parameters

  • zaad: Een zaad voor een nieuwe reeks pseudo-willekeurige getallen die moet worden geretourneerd door opeenvolgende aanroepen van rand()

Winstwaarde

  • Deze functie retourneert een pseudo-gegenereerd willekeurig getal.

Opmerking: De generator voor pseudo-willekeurige getallen mag slechts één keer worden geplaatst, vóór elke aanroep van rand() en aan het begin van het programma. Het mag niet herhaaldelijk worden gezaaid of opnieuw worden gezaaid elke keer dat u een nieuwe batch pseudo-willekeurige getallen wilt genereren.

Standaardpraktijk is om het resultaat van een aanroep naar te gebruiken strand(tijd(0)) als het zaad. Time() retourneert echter een time_t-waarde die elke keer varieert en daarom varieert het pseudo-willekeurige getal voor elke programma-aanroep.

rand() en srand() met voorbeeld

rand() En strand() vergelijking

Voorbeeld van strand()

C++


eerste laptopje



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

>

>

Uitvoer

1326865685 1413967981 1967280748 919663823>

Tijdcomplexiteit : O(N), waarbij N het aantal willekeurige getallen is dat moet worden gegenereerd.

Opmerking: Dit programma creëert bij elke programma-uitvoering een andere reeks willekeurige getallen.

Hoe zijn srand() en rand() aan elkaar gerelateerd?

srand() stelt het zaad in dat door rand wordt gebruikt om willekeurige getallen te genereren. Als je srand niet aanroept vóór je eerste aanroep naar rand, is het alsof je srand(1) hebt aangeroepen om de kiem op één te zetten.
In het kort, srand() — Stel Seed in voor de functie rand(). .