random number generator c
Denne opplæringen beskriver bruken av funksjoner rand () og srand () i detalj for å generere tilfeldige tall i C ++:
Mange ganger trenger vi å bruke tilfeldige tall i applikasjonen vår for å produsere simuleringer eller spill og andre applikasjoner som krever tilfeldige hendelser.
For eksempel, i et terningspill, uten å ha tilfeldige hendelser, vil vi ha den samme siden som dukker opp hver gang vi kaster terningene og gir uønskede resultater.
Dermed blir det nødvendig at vi har en tilfeldig tallgenerator til rådighet. I det fysiske miljøet kan vi generere tilfeldige hendelser, men det er ikke mulig når det gjelder datamaskiner.
=> Les gjennom Easy C ++ Training Series.
Dette er fordi alt på datamaskiner er binært, dvs. 0 eller 1 (sant eller usant) og ingenting i mellom. Så datamaskiner genererer vanligvis forutsigbare hendelser og kan ikke generere tilfeldige hendelser.
I stedet simulerer datamaskiner tilfeldighet som gjøres ved hjelp av pseudo-tilfeldig tallgenerator (PRNG) . C ++ har en tilfeldig tallgenerator og kan brukes med mange av applikasjonene.
I denne opplæringen vil vi diskutere funksjonene / tilnærmingene for å generere tilfeldige tall i C ++ i detalj.
Hva du vil lære:
- Pseudo-Random Number Generator (PRNG) I C ++
- rand And srand Funksjoner i C ++
- Forskjellen mellom rand () og srand ()
- C ++ Tilfeldig flyt
- C ++ Tilfeldig antall mellom 0 og 1
- C ++ Tilfeldig antall mellom 1 og 10
- ofte stilte spørsmål
- Konklusjon
- Anbefalt lesing
Pseudo-Random Number Generator (PRNG) I C ++
Generelt kan en pseudo-tilfeldig tallgenerator (PRNG) defineres som et program som tar et frø eller et startnummer og forvandler det til et annet tall som er forskjellig fra frø ved hjelp av matematiske operasjoner.
Denne prosessen utføres gjentatte ganger ved å ta det siste genererte nummeret hver gang. Hver gang det genererte nummeret ikke er relatert til de forrige tallene. Dermed er dette programmet i stand til å generere en rekke tall som virker tilfeldige.
C ++ språk kommer med en innebygd pseudo-tilfeldig tallgenerator og gir to funksjoner rand () og srand () som kan brukes til å generere tilfeldige tall.
La oss diskutere disse to funksjonene i detalj.
hva er en feil i programvaren
rand And srand Funksjoner i C ++
srand ()
Funksjon prototype: ugyldig srand (usignert int seed);
Parametere: seed - En heltallsverdi som skal brukes som seed av algoritmen for pseudo-tilfeldig tallgenerator.
Returverdi: Ingen
Beskrivelse: srand-funksjonen brukes til å initialisere sekvensen av pseudo-tilfeldige tall med en parameter kalt ‘random seed’. Det får utgangen til randfunksjonen til å se tilfeldig ut. Ellers vil utgangen fra rand () -funksjonen være den samme hver gang vi kaller det.
Dermed, hvis vi sår tilfeldig tallgenerator med srand () -funksjonen, vil den starte generatoren fra det punktet som er avhengig av argumentverdien som sendes til srand. Hvis vi setter tilfeldige tallgenerator med systemtiden For eksempel, før den første samtalen til rand () -funksjonen, vil den generere tilfeldige tall hver gang vi kjører programmet.
Vær oppmerksom på at vi vanligvis trenger å ringe srand () -funksjonen bare en gang før samtalen til rand () -funksjonen, og ikke hver gang vi genererer tilfeldige tall.
rand ()
Funksjon prototype: int rand (ugyldig);
Parametere: ingen
Returverdi: Et heltall mellom 0 og RAND_MAX.
Beskrivelse: Rand () -funksjonen genererer neste tilfeldige tall i sekvensen. Antallet som genereres er det pseudo-tilfeldige heltallet mellom 0 og RAND_MAX. RAND_MAX er en konstant i overskriften, vanligvis satt til verdi 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; }
Produksjon:
I det ovennevnte programmet har vi generert de første 100 tilfeldige tallene, ved å gi systemklokken som seed for srand-funksjonen. I dette programmet har vi brukt både srand så vel som randfunksjoner. Merk at på grunn av systemklokken som frø, vil den genererte utgangen være forskjellig hver gang vi kjører programmet.
Forskjellen mellom rand () og srand ()
rad() | srand () |
---|---|
Brukes til å generere tilfeldige tall. | Frø PRNG brukt av rand () -funksjonen. |
Kalt så mange ganger som vi vil generere tilfeldige tall. | Ringte bare én gang for å se tilfeldig tallgenerator. |
Tar ingen argumenter. | Tar parameteren som brukes til å såkalt tilfeldig tallgenerator. |
Returnerer rekkefølgen av tilfeldige tall hver gang den blir ringt. | Returnerer ikke en verdi. |
C ++ Tilfeldig flyt
Rand () -funksjonen som vi har sett ovenfor som standard, returnerer en heltallverdi som i visse tilfeller kan forårsake overløp. Dermed kan vi bruke flyte- eller dobbeltverdi. Vi kan generere float tilfeldige tall ved å kaste returverdien til rand () -funksjonen til 'float'.
Dermed vil følgende generere et tilfeldig tall mellom float 0.0 og 1.0 (begge inkludert).
cout< Tilsvarende vil linjen nedenfor generere et tilfeldig tall mellom 1,2 og 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
I vårt påfølgende eksempel nedenfor bruker vi random float for å generere utdata.
C ++ Tilfeldig antall mellom 0 og 1
Vi kan bruke srand () og rand () -funksjonen for å generere tilfeldige tall mellom 0 og 1. Merk at vi må kaste utdataene fra rand () -funksjonen til desimalverdien enten flyte eller dobbel.
Standard returverdien for funksjonen rand (), dvs. heltall, er utilstrekkelig til å vise tilfeldige tall mellom 0 og 1 som er brøk.
C ++ - programmet gitt nedenfor viser de fem første tilfeldige tallene mellom 0 og 1.
beste google chrome popup-blokkering
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Produksjon :
Vi ser at produksjonen av programmet er det tilfeldige tallet mellom 0 og 1 som er brøk.
Hvis vi ikke kaster returverdien av rand () -funksjonen til å flyte eller doble, vil vi få 0 som tilfeldig tall.
C ++ Tilfeldig antall mellom 1 og 10
Det neste eksemplet er å generere tilfeldige tall mellom 1 og 10. Følgende er C ++ - programmet som genererer tilfeldige tall.
Vi kaller srand-funksjonen med systemklokken og kaller deretter rand-funksjonen 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:'< Produksjon:
I programmet ovenfor genererer vi de 10 første tilfeldige tallene mellom 1 og 10. Merk at hver gang programmet kjøres, vil det generere forskjellige sett med tall på grunn av at srand-funksjonen blir kalt.
ofte stilte spørsmål
Q # 1) Hva er overskriftsfilen for tilfeldig funksjon i C ++?
Svar: Funksjonene for å generere tilfeldige tall, rand og srand er definert i< cstdlib > overskrift på C ++.
Q # 2) Hva er Rand_max i C ++?
Svar: RAND_MAX er en konstant i topptekst, vanligvis satt til verdi 32767. Pseudo-random number generator (PRNG) genererer tilfeldige tall mellom 0 og RAND_MAX.
Sp # 3) Hvordan fungerer den tilfeldige funksjonen?
Svar: C ++ støtter to tilfeldige funksjoner, dvs. srand () og rand (). Funksjonen srand () frø den tilfeldige tallgeneratoren som brukes av rand () -funksjonen som genererer den tilfeldige tallsekvensen avhengig av det opprinnelige frøet som er gitt.
Spørsmål nr. 4) Hvordan kommer du i gang med tiden?
Svar: Srand-funksjonen frø pseudo-tilfeldig tallgenerator (PRNG) brukt av rand () -funksjonen. Det er en vanlig praksis å bruke resultatet av en kall til tid (0) som frø. Denne tidsfunksjonen returnerer verdien, et antall sekunder siden 00:00 timer, 1. januar 1970, UTC (nåværende UNIX-tidsstempel).
Dermed endres verdien av frø hvert sekund. Derfor genereres et nytt sett med tilfeldige tall hver gang srand blir ringt med tidsfunksjon.
Konklusjon
Vi har diskutert generering av tilfeldig tall i detalj i denne opplæringen. Programmeringsspråk eller generelt genererer ikke datamaskiner tilfeldige tall, ettersom de er utformet for å gi prediktiv effekt. Derfor må vi simulere tilfeldighet.
For å simulere tilfeldighet bruker vi pseudo-random number generator (PRNG) som er innebygd i C ++. Dermed kan vi generere tilfeldige tall i C ++ ved å bruke de to funksjonene, rand () og srand ().
Funksjonen srand () brukes til å gi frø for å generere tilfeldige tall mens rand () -funksjonen genererer neste tilfeldige tall i sekvensen.
=> Se etter hele C ++ treningsserien her.
Anbefalt lesing
- C # Tilfeldig nummer og C # Tilfeldig strenggenerator med kodeeksempler
- Python hovedfunksjonsveiledning med praktiske eksempler
- Unix Pipes Tutorial: Pipes in Unix Programming
- Rekursjon i C ++
- Vennefunksjoner i C ++
- Polymorfisme i C ++
- Objektorientert programmering i C ++
- OOP Java: Introduksjon til objektorientert programmering i Java