random number generator c
Acest tutorial descrie utilizarea funcțiilor rand () și srand () în detaliu pentru a genera numere aleatorii în C ++:
De multe ori trebuie să folosim numere aleatorii în aplicația noastră pentru a produce simulări sau jocuri și alte aplicații care necesită evenimente aleatorii.
De exemplu, într-un joc de zaruri, fără a avea evenimente aleatorii, vom avea aceeași parte care apare de fiecare dată când aruncăm zarurile, dând astfel rezultate nedorite.
Astfel, devine necesar să avem la dispoziție un generator de numere aleatorii. În mediul fizic, putem genera evenimente aleatorii, dar nu este posibil când vine vorba de computere.
=> Citiți seria Easy C ++ Training.
Acest lucru se datorează faptului că totul din computere este binar, adică 0 sau 1 (adevărat sau fals) și nimic între ele. Deci computerele generează de obicei evenimente previzibile și nu sunt capabile să genereze evenimente aleatorii.
În schimb, computerele simulează întâmplarea care se face folosind generator de numere pseudo-aleatorii (PRNG) . C ++ are un generator de numere aleatorii și poate fi utilizat cu multe dintre aplicații.
În acest tutorial, vom discuta în detaliu funcțiile / abordările pentru a genera numere aleatorii în C ++.
Ce veți învăța:
- Generator de numere pseudo-aleatorii (PRNG) în C ++
- Funcțiile rand și srand în C ++
- Diferența dintre rand () și srand ()
- C ++ Random Float
- Număr aleatoriu C ++ între 0 și 1
- Număr aleatoriu C ++ între 1 și 10
- întrebări frecvente
- Concluzie
- Lectură recomandată
Generator de numere pseudo-aleatorii (PRNG) în C ++
În general, un generator de numere pseudo-aleatorii (PRNG) poate fi definit ca un program care ia o sămânță sau un număr de pornire și îl transformă într-un alt număr diferit de sămânță folosind operații matematice.
Acest proces se desfășoară în mod repetat luând de fiecare dată ultimul număr generat. De fiecare dată când numărul generat nu are legătură cu numerele anterioare. Astfel, acest program este capabil să genereze o serie de numere care apar aleatoriu.
Limbajul C ++ vine cu un generator de numere pseudo-aleatoriu încorporat și oferă două funcții rand () și srand () care pot fi utilizate pentru a genera numere aleatorii.
Să discutăm în detaliu aceste două funcții.
cum se face un fișier c ++
Funcțiile rand și srand în C ++
srand ()
Prototipul funcției: void srand (semințe int nesemnate);
Parametri: seed - O valoare întreagă care trebuie utilizată ca seed de algoritmul generator de numere pseudo-aleatorii.
Valoare returnată: Nici unul
Descriere: Funcția srand este utilizată pentru a inițializa secvența numerelor pseudo-aleatorii cu un parametru numit „sămânță aleatorie”. Face ieșirea funcției rand să pară aleatorie. În caz contrar, ieșirea funcției rand () va fi aceeași de fiecare dată când o numim.
Astfel, dacă semănăm generatorul de numere aleatoare cu funcția srand (), acesta va porni generatorul din punctul care depinde de valoarea argumentului transmisă srand. Dacă setăm generatorul de numere aleatorii cu timpul sistemului De exemplu, înainte de primul apel către funcția rand (), atunci acesta va genera numerele aleatorii de fiecare dată când rulăm programul.
Rețineți că, de obicei, trebuie să apelăm funcția srand () o singură dată înainte de apelul la funcția rand () și nu de fiecare dată când generăm numere aleatorii.
rand ()
Prototipul funcției: int rand (nul);
Parametri: nici unul
Valoare returnată: O valoare întreagă între 0 și RAND_MAX.
Descriere: Funcția rand () generează următorul număr aleatoriu din secvență. Numărul generat este întregul pseudo-aleatoriu între 0 și RAND_MAX. RAND_MAX este o constantă în antet setată în general la valoarea 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; }
Ieșire:
În programul de mai sus, am generat primele 100 de numere aleatoare, dând ceasul de sistem ca sămânță pentru funcția srand. În acest program, am folosit atât funcțiile srand, cât și funcțiile rand. Rețineți că, din cauza ceasului sistemului ca semințe, ieșirea generată va fi diferită de fiecare dată când executăm programul.
Diferența dintre rand () și srand ()
rand() | srand () |
---|---|
Folosit pentru a genera numere aleatorii. | Semințele PRNG utilizate de funcția rand (). |
Apelat de câte ori dorim să generăm numerele aleatorii. | Sunat o singură dată pentru a vedea generatorul de numere aleatorii. |
Nu ia niciun argument. | Preia parametrul care este utilizat pentru însămânțarea generatorului de numere aleatorii. |
Returnează secvența numerelor aleatorii de fiecare dată când este apelată. | Nu returnează o valoare. |
C ++ Random Float
Funcția rand () pe care am văzut-o mai sus în mod implicit returnează o valoare întreagă care poate provoca o revărsare în anumite cazuri. Astfel, putem folosi float sau valoare dublă. Putem genera numere aleatorii flotante prin aruncarea valorii returnate a funcției rand () la „float”.
Astfel, următoarele vor genera un număr aleatoriu între float 0.0 și 1.0 (ambele inclusiv).
cout< În mod similar, linia de mai jos va genera un număr aleatoriu între 1,2 și 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
În exemplul nostru de mai jos folosim float aleator pentru a genera ieșirea.
Număr aleatoriu C ++ între 0 și 1
Putem folosi funcțiile srand () și rand () pentru a genera numere aleatorii între 0 și 1. Rețineți că trebuie să aruncăm ieșirea funcției rand () la valoarea zecimală fie float, fie dublu.
Valoarea de returnare implicită a funcției rand () adică întreg este inadecvată pentru a afișa numere aleatorii între 0 și 1 care sunt fracții.
Programul C ++ prezentat mai jos afișează primele cinci numere aleatoare cuprinse între 0 și 1.
ce program deschide un fișier json
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Ieșire :
Vedem că ieșirea programului este numărul aleatoriu între 0 și 1 care sunt fracții.
Dacă nu aruncăm valoarea returnată a funcției rand () pentru a flota sau dubla, atunci vom obține 0 ca număr aleatoriu.
Număr aleatoriu C ++ între 1 și 10
Următorul exemplu este de a genera numere aleatorii între 1 și 10. Urmează programul C ++ care generează numere aleatorii.
Apelăm funcția srand cu ceasul sistemului și apoi apelăm funcția rand cu operatorii modulului 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Ieșire:
În programul de mai sus, generăm primele 10 numere aleatorii între 1 și 10. Rețineți că de fiecare dată când programul este rulat, acesta va genera diferite seturi de numere din cauza funcției srand care este apelată.
întrebări frecvente
Q # 1) Care este fișierul antet pentru funcția Random în C ++?
Răspuns: Funcțiile pentru a genera numere aleatorii, rand și srand sunt definite în< cstdlib > antetul C ++.
Q # 2) Ce este Rand_max în C ++?
Răspuns: RAND_MAX este o constantă în antet setată în general la valoarea 32767. Generatorul de numere pseudo-aleatorii (PRNG) generează numere aleatoare între 0 și RAND_MAX.
Î # 3) Cum funcționează funcția aleatorie?
Răspuns: C ++ acceptă două funcții aleatorii, adică srand () și rand (). Funcția srand () generează generatorul de numere aleatorii utilizat de funcția rand () care generează secvența de numere aleatoare în funcție de semințele inițiale furnizate.
Q # 4) Cum vă faceți timp cu timpul?
Răspuns: Funcția srand însămânțează generatorul de numere pseudo-aleatorii (PRNG) utilizat de funcția rand (). Este o practică standard să folosiți rezultatul unui apel la timp (0) ca semințe. Această funcție de timp returnează valoarea, un număr de secunde de la ora 00:00, 1 ianuarie 1970, UTC (marcajul de timp UNIX actual).
Astfel, valoarea semințelor se schimbă în fiecare secundă. Prin urmare, de fiecare dată când se apelează srand cu funcția de timp, se generează un nou set de numere aleatorii.
Concluzie
Am discutat în detaliu Generarea numerelor aleatorii în acest tutorial. Limbajele de programare sau, în general, computerele nu generează numere aleatorii, deoarece sunt concepute pentru a oferi ieșiri predictive. Prin urmare, trebuie să simulăm întâmplarea.
Pentru a simula întâmplarea, folosim generatorul de numere pseudo-aleatorii (PRNG) care este încorporat în C ++. Astfel, folosind cele două funcții, rand () și srand () putem genera numere aleatorii în C ++.
Funcția srand () este utilizată pentru a furniza semințe pentru generarea de numere aleatorii, în timp ce funcția rand () generează următorul număr aleatoriu din secvență.
=> Căutați întreaga serie de formare C ++ aici.
Lectură recomandată
- C # Număr aleatoriu și C # Generator de șiruri aleatorii cu exemple de cod
- Tutorial de funcții principale Python cu exemple practice
- Tutorial Unix Pipes: Pipe în programarea Unix
- Recursivitate în C ++
- Funcții prieten în C ++
- Polimorfism în C ++
- Programare orientată pe obiecte în C ++
- OOP Java: Introducere în programarea orientată pe obiecte în Java