random number generator c
Denne vejledning beskriver anvendelsen af funktioner rand () og srand () i detaljer for at generere tilfældige tal i C ++:
Mange gange har vi brug for tilfældige tal i vores applikation til at producere simuleringer eller spil og andre applikationer, der kræver tilfældige begivenheder.
For eksempel, i et terningspil uden tilfældige begivenheder, vil vi have den samme side, der dukker op hver gang vi kaster terningerne og derved giver uønskede resultater.
Således bliver det nødvendigt, at vi har en tilfældig talgenerator til rådighed. I det fysiske miljø kan vi generere tilfældige begivenheder, men det er ikke muligt, når det kommer til computere.
=> Læs gennem Easy C ++ træningsserien.
Dette skyldes, at alt på computere er binært, dvs. 0 eller 1 (sandt eller falsk) og intet imellem. Så computere genererer normalt forudsigelige begivenheder og er ikke i stand til at generere tilfældige begivenheder.
I stedet simulerer computere tilfældighed, som udføres ved hjælp af pseudo-tilfældig talgenerator (PRNG) . C ++ har en tilfældig talgenerator og kan bruges med mange af applikationerne.
I denne vejledning vil vi diskutere funktionerne / tilgange til at generere tilfældige tal i C ++ i detaljer.
Hvad du lærer:
- Pseudo-tilfældig talgenerator (PRNG) i C ++
- rand og srand Funktioner i C ++
- Forskellen mellem rand () og srand ()
- C ++ tilfældig flyde
- C ++ tilfældigt tal mellem 0 og 1
- C ++ tilfældigt tal mellem 1 og 10
- Ofte stillede spørgsmål
- Konklusion
- Anbefalet læsning
Pseudo-tilfældig talgenerator (PRNG) i C ++
Generelt kan en pseudo-tilfældig talgenerator (PRNG) defineres som et program, der tager et frø eller et startnummer og omdanner det til et andet tal, der adskiller sig fra frø ved hjælp af matematiske operationer.
Denne proces udføres gentagne gange ved at tage det sidst genererede nummer hver gang. Hver gang det genererede nummer ikke er relateret til de tidligere tal. Dette program er således i stand til at generere en række numre, der vises tilfældige.
C ++ sprog kommer med en indbygget pseudo-tilfældig talgenerator og giver to funktion rand () og srand (), der kan bruges til at generere tilfældige tal.
Lad os diskutere disse to funktioner i detaljer.
hvad er analysefasen i SDLC
rand og srand Funktioner i C ++
srand ()
Funktionsprototype: ugyldigt srand (usigneret int frø);
Parametre: seed - En heltalsværdi, der skal bruges som seed af den pseudo-tilfældige talgeneratoralgoritme.
Returværdi: Ingen
Beskrivelse: srand-funktionen bruges til at initialisere sekvensen af pseudo-tilfældige tal med en parameter kaldet 'tilfældig frø'. Det får output fra randfunktionen til at se tilfældig ud. Ellers vil output fra rand () - funktionen være den samme hver gang vi kalder det.
Således, hvis vi udså tilfældig talgenerator med srand () -funktionen, starter den generatoren fra det punkt, der er afhængig af argumentværdien, der sendes til srand. Hvis vi indstiller tilfældige talgeneratorer med systemtiden For eksempel, før det første opkald til rand () -funktionen, genererer den tilfældige tal hver gang vi kører programmet.
Bemærk, at vi normalt kun skal ringe til srand () -funktionen en gang før opkaldet til rand () -funktionen og ikke hver gang vi genererer tilfældige tal.
rand ()
Funktionsprototype: int rand (ugyldigt);
Parametre: ingen
Returværdi: Et heltal mellem 0 og RAND_MAX.
Beskrivelse: Funktionen rand () genererer det næste tilfældige tal i sekvensen. Det genererede tal er det pseudo-tilfældige heltal mellem 0 og RAND_MAX. RAND_MAX er en konstant i overskriften, der generelt er indstillet til værdi 32767.
#include #include #include int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count <= 100; ++count) { std::cout << std::rand() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Produktion:
I ovenstående program har vi genereret de første 100 tilfældige tal ved at give systemuret som frø til srand-funktion. I dette program har vi brugt både srand såvel som randfunktioner. Bemærk, at på grund af systemuret som frø, vil det genererede output være forskelligt hver gang vi udfører programmet.
Forskellen mellem rand () og srand ()
række() | srand () |
---|---|
Bruges til at generere tilfældige tal. | Frø PRNG brugt af rand () -funktionen. |
Kaldes så mange gange, som vi vil generere tilfældige tal. | Kaldes kun én gang for at se tilfældig talgenerator. |
Tager ingen argumenter. | Tager den parameter, der bruges til at udså tilfældig talgenerator. |
Returnerer rækkefølgen af tilfældige tal hver gang den kaldes. | Returnerer ikke en værdi. |
C ++ tilfældig flyde
Funktionen rand (), som vi har set ovenfor, returnerer som standard et heltal, der i visse tilfælde kan forårsage et overløb. Således kan vi bruge flydende eller dobbelt værdi. Vi kan generere tilfældige flydende tal ved at kaste returværdien af funktionen rand () til 'flyde'.
Følgende vil således generere et tilfældigt tal mellem float 0.0 og 1.0 (begge inklusive).
cout< Tilsvarende genererer nedenstående linje et tilfældigt tal mellem 1,2 og 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
I vores efterfølgende eksempel nedenfor bruger vi tilfældig float til at generere output.
C ++ tilfældigt tal mellem 0 og 1
Vi kan bruge srand () og rand () -funktionen til at generere tilfældige tal mellem 0 og 1. Bemærk, at vi er nødt til at kaste output af rand () -funktionen til decimalværdien enten float eller double.
Standardreturværdien af rand () -funktionen, dvs. heltal er utilstrækkelig til at vise tilfældige tal mellem 0 og 1, som er brøkdele.
C ++ -programmet nedenfor viser de første fem tilfældige tal mellem 0 og 1.
proces til fejlhåndtering i softwaretest
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Produktion :
Vi ser, at output af programmet er det tilfældige tal mellem 0 og 1, som er brøker.
Hvis vi ikke kaster returværdien af rand () -funktionen til at flyde eller fordoble, så får vi 0 som tilfældigt tal.
C ++ tilfældigt tal mellem 1 og 10
Det næste eksempel er at generere tilfældige tal mellem 1 og 10. Følgende er C ++ - programmet, der genererer tilfældige tal.
Vi kalder srand-funktionen med systemuret og kalder derefter rand-funktionen med modul 10-operatører.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Produktion:
I ovenstående program genererer vi de første 10 tilfældige tal mellem 1 og 10. Bemærk, at hver gang programmet køres, vil det generere forskellige sæt numre på grund af den kaldte srand-funktion.
Ofte stillede spørgsmål
Q # 1) Hvad er headerfilen til tilfældig funktion i C ++?
Svar: Funktionerne til at generere tilfældige tal, rand og srand er defineret i< cstdlib > overskrift på C ++.
Q # 2) Hvad er Rand_max i C ++?
Svar: RAND_MAX er en konstant i header, der generelt er indstillet til værdi 32767. Den pseudo-tilfældige talgenerator (PRNG) genererer tilfældige tal mellem 0 og RAND_MAX.
Q # 3) Hvordan fungerer den tilfældige funktion?
Svar: C ++ understøtter to tilfældige funktioner, dvs. srand () og rand (). Funktionen srand () frøer den tilfældige talgenerator, der bruges af rand () -funktionen, der genererer den tilfældige talrækkefølge afhængigt af det oprindelige frø, der er givet.
Spørgsmål nr. 4) Hvordan kæmper du med tiden?
Svar: Srand-funktionen frøer den pseudo-tilfældige talgenerator (PRNG), der bruges af rand () -funktionen. Det er en standardpraksis at bruge resultatet af en opfordring til tid (0) som frø. Denne tidsfunktion returnerer værdien, et antal sekunder siden 00:00 timer, 1. jan. 1970, UTC (nuværende UNIX-tidsstempel).
Således ændres værdien af frø hvert sekund. Derfor genereres et nyt sæt tilfældige tal hver gang, når srand kaldes med tidsfunktion.
Konklusion
Vi har diskuteret tilfældig generering af numre i detaljer i denne vejledning. Programmeringssprog eller generelt genererer computere ikke tilfældige tal, da de er designet til at give forudsigelig output. Derfor er vi nødt til at simulere tilfældighed.
For at simulere tilfældighed bruger vi pseudo-tilfældig talgenerator (PRNG), som er indbygget i C ++. Således kan vi ved hjælp af de to funktioner, rand () og srand () generere tilfældige tal i C ++.
Funktionen srand () bruges til at give frø til at generere tilfældige tal, mens rand () -funktionen genererer det næste tilfældige tal i sekvensen.
=> Se efter hele C ++ træningsserien her.
Anbefalet læsning
- C # tilfældigt nummer og C # tilfældig strenggenerator med kodeeksempler
- Pythons hovedfunktionsvejledning med praktiske eksempler
- Unix Pipes Tutorial: Pipes in Unix Programming
- Rekursion i C ++
- Venfunktioner i C ++
- Polymorfisme i C ++
- Objektorienteret programmering i C ++
- OOP Java: Introduktion til objektorienteret programmering i Java