rand()-funktio on C++ STL:n sisäänrakennettu funktio, joka määritellään otsikkotiedostossa . rand()-funktiota käytetään luomaan satunnaislukusarja. Satunnaisluku luodaan käyttämällä algoritmia, joka antaa sarjan toisiinsa liittymättömiä numeroita aina, kun tätä toimintoa kutsutaan. Rand()-funktiota käytetään C++:ssa luomaan satunnaislukuja alueella [0, RAND_MAX).
RAND_MAX: Se on vakio, jonka oletusarvo voi vaihdella toteutusten välillä, mutta sille myönnetään vähintään 32767.
randin() syntaksi
int rand (void);>
randin() parametrit
- Tämä toiminto ei ota mitään parametreja.
randin() palautusarvo
- rand() palauttaa näennäissatunnaisen luvun välillä [0, RAND_MAX).
Oletetaan, että generoimme 5 satunnaislukua C++:ssa rand()-funktion avulla silmukassa, jolloin joka kerta kun käännämme ja suoritamme ohjelman, tulosteemme on oltava sama numerosarja.
Esimerkki 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;> }> |
>
>Lähtö
1804289383 846930886 1681692777 1714636915 1957747793>
Rand()-funktion monimutkaisuus
Rand()-funktion aika- ja tilamonimutkaisuus ovat seuraavat:
- Ajan monimutkaisuus: O(1) Aputilan monimutkaisuus: O(1)
Huomautus: Tämä ohjelma luo saman satunnaislukusarjan jokaisessa ohjelmassa.
Alla oleva ohjelma toteuttaa rand()-funktion arvon saamiseksi välillä 0 - 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> |
>
>Lähtö
83 86 77 15 93>
Alla oleva ohjelma toteuttaa rand()-funktion arvon saamiseksi Upper_Boundista Alarajaan.
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> |
>
karttakonekirjoitus
>Lähtö
66 90 38 99 88>
srand()
srand()-funktio on C++ STL:n sisäänrakennettu funktio, joka on määritelty kohdassa otsikkotiedosto. srand()-funktiota käytetään satunnaislukugeneraattoreiden alustamiseen. Funktio srand() asettaa alkupisteen näennäissatunnaisten kokonaislukujen sarjan tuottamiselle. Jos srand():ta ei kutsuta, rand()-siemen asetetaan ikään kuin srand(1):tä olisi kutsuttu ohjelman käynnistyessä. Mikä tahansa muu siemenarvo asettaa generaattorin eri aloituspisteeseen.
srand() syntaksi
void srand( unsigned seed ); OR int srand( unsigned int seed);>
Sievettää rand():n käyttämän pseudosatunnaislukugeneraattorin arvon kanssa siemen.
Parametrit
- siemen: Siemen uudelle näennäissatunnaisten numeroiden sarjalle, joka palautetaan peräkkäisillä kutsuilla rand()
Palautusarvo
- Tämä funktio palauttaa pseudogeneroidun satunnaisluvun.
Huomautus: Pseudosatunnaislukugeneraattori tulee siementää vain kerran, ennen rand()-kutsuja ja ohjelman alussa. Sitä ei saa siementää toistuvasti tai sievettää uudelleen joka kerta, kun haluat luoda uuden erän näennäissatunnaisia numeroita.
Vakiokäytäntö on käyttää kutsun tulosta srand(aika(0)) kuin siemen. Time() kuitenkin palauttaa time_t-arvon, joka vaihtelee joka kerta, ja näin ollen näennäissatunnainen luku vaihtelee jokaisessa ohjelmakutsussa.

rand() ja srand() vertailu
Esimerkki 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;> }> |
>
>Lähtö
1326865685 1413967981 1967280748 919663823>
Aika monimutkaisuus : O(N), missä N on generoitavien satunnaislukujen lukumäärä.
Huomautus: Tämä ohjelma luo eri satunnaislukujen sarjan jokaisessa ohjelmassa.
Miten srand() ja rand() liittyvät toisiinsa?
srand() asettaa siemenen, jota rand käyttää satunnaislukujen luomiseen. Jos et soita srandille ennen ensimmäistä randin kutsua, on kuin olisit soittanut srand(1):lle asettaaksesi siemenen yhteen.
Lyhyesti, srand() — Aseta siemen rand()-funktiolle .