random number generator c
Ta vadnica podrobno opisuje uporabo funkcij rand () in srand () podrobno za ustvarjanje naključnih števil v C ++:
Velikokrat zahtevamo uporabo naključnih števil v naši aplikaciji za izdelavo simulacij ali iger in drugih aplikacij, ki zahtevajo naključne dogodke.
Na primer v igri s kockami, ne da bi prišlo do naključnih dogodkov, se nam bo vsakič, ko vržemo kocke, pojavila ista stran, s čimer bomo dobili neželene rezultate.
Tako je nujno, da imamo na voljo generator naključnih števil. V fizičnem okolju lahko generiramo naključne dogodke, vendar to ni mogoče, ko gre za računalnike.
=> Preberite serijo Easy C ++ Training Series.
To je zato, ker je vse v računalnikih binarno, tj. 0 ali 1 (resnično ali neresnično) in nič vmes. Tako računalniki običajno generirajo predvidljive dogodke in ne morejo generirati naključnih dogodkov.
Namesto tega računalniki simulirajo naključnost, ki je narejena z uporabo generator psevdonaključnih števil (PRNG) . C ++ ima generator naključnih števil in se lahko uporablja z mnogimi aplikacijami.
V tej vadnici bomo podrobno obravnavali funkcije / pristope za ustvarjanje naključnih števil v jeziku C ++.
Kaj se boste naučili:
- Generator psevdonaključnih števil (PRNG) v jeziku C ++
- rand in srand funkcije v C ++
- Razlika med rand () in srand ()
- C ++ Random Float
- Naključna številka C ++ med 0 in 1
- Naključna številka C ++ med 1 in 10
- Pogosto zastavljena vprašanja
- Zaključek
- Priporočeno branje
Generator psevdonaključnih števil (PRNG) v jeziku C ++
Na splošno je mogoče generator psevdonaključnih števil (PRNG) definirati kot program, ki vzame seme ali izhodiščno število in ga z matematičnimi operacijami pretvori v neko drugo število, ki se razlikuje od semena.
Ta postopek se izvede večkrat tako, da se vsakič vzame zadnja generirana številka. Vsakokrat ustvarjena številka ni povezana s prejšnjimi številkami. Tako lahko ta program ustvari vrsto številk, ki se zdijo naključne.
Jezik C ++ ima vgrajen generator psevdonaključnih števil in ponuja dve funkciji rand () in srand (), ki ju lahko uporabimo za generiranje naključnih števil.
Podrobno razpravljajmo o teh dveh funkcijah.
funkcija razvrščanja mehurčkov c ++
rand in srand funkcije v C ++
srand ()
Prototip funkcije: void srand (nepodpisano int seme);
Parametri: seme - celoštevilska vrednost, ki jo algoritem generatorja psevdonaključnih števil uporabi kot seme.
Vrnjena vrednost: Nobenega
Opis: Funkcija srand se uporablja za inicializiranje zaporedja psevdonaključnih števil s parametrom, imenovanim 'naključno seme'. Izhod funkcije rand je videti naključen. V nasprotnem primeru bo izhod funkcije rand () vsakič, ko jo pokličemo, enak.
Če torej posadimo generator naključnih števil s funkcijo srand (), bo generator zagnal od točke, ki je odvisna od vrednosti argumenta, posredovanega srand. Če nastavimo generator naključnih števil s sistemskim časom Na primer pred prvim klicem funkcije rand (), bo generirala naključne številke vsakič, ko zaženemo program.
Upoštevajte, da moramo funkcijo srand () običajno poklicati samo enkrat pred funkcijo klica rand () in ne vsakič, ko ustvarjamo naključne številke.
rand ()
Prototip funkcije: int rand (void);
Parametri: nobenega
Vrnjena vrednost: Celoštevilska vrednost med 0 in RAND_MAX.
Opis: Funkcija rand () generira naslednje naključno število v zaporedju. Ustvarjeno število je psevdonaključno celo število med 0 in RAND_MAX. RAND_MAX je konstanta v glavi, ki je običajno nastavljena na vrednost 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; }
Izhod:
V zgornjem programu smo ustvarili prvih 100 naključnih števil, tako da smo sistemsko uro dali kot seme za funkcijo srand. V tem programu smo uporabili tako funkcije srand kot rand. Upoštevajte, da bo zaradi sistemske ure kot semena ustvarjeni izhod drugačen vsakič, ko zaženemo program.
Razlika med rand () in srand ()
vrstica () | srand () |
---|---|
Uporablja se za ustvarjanje naključnih števil. | Seme PRNG, ki ga uporablja funkcija rand (). |
Klican tolikokrat, kolikor želimo ustvariti naključne številke. | Klican samo enkrat, da si ogledate generator naključnih števil. |
Ne jemlje nobenih argumentov. | Vzame parameter, ki se uporablja za zasejanje generatorja naključnih števil. |
Vrne zaporedje naključnih števil vsakič, ko je poklicano. | Ne vrne vrednosti. |
C ++ Random Float
Funkcija rand (), ki smo jo privzeto videli zgoraj, vrne celoštevilčno vrednost, ki lahko v določenih primerih povzroči prelivanje. Tako lahko uporabimo float ali dvojno vrednost. Plavajoče naključne številke lahko generiramo tako, da vrnemo vrednost funkcije rand () v 'float'.
Tako bo naslednje ustvarilo naključno število med float 0,0 in 1,0 (vključno z obema).
cout< Podobno bo spodnja vrstica ustvarila naključno število med 1,2 in 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
V naslednjem spodnjem primeru uporabljamo naključni float za generiranje rezultatov.
Naključna številka C ++ med 0 in 1
S funkcijo srand () in rand () lahko uporabimo za generiranje naključnih števil med 0 in 1. Upoštevajte, da moramo rezultat funkcije rand () oddati na decimalno vrednost s plavajočo ali dvojno vrednostjo.
Privzeta vrnjena vrednost funkcije rand (), tj. Celo število ne zadostuje za prikaz naključnih števil med 0 in 1, ki so ulomki.
Spodaj navedeni program C ++ prikazuje prvih pet naključnih števil med 0 in 1.
najboljši računalniški vdiranje programske opreme na svetu brezplačno prenesete
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Izhod :
Vidimo, da je rezultat programa naključno število med 0 in 1, ki so ulomki.
Če vrnjene vrednosti funkcije rand () ne pretvorimo v plavajočo ali dvojno, bomo kot naključno število dobili 0.
Naključna številka C ++ med 1 in 10
Naslednji primer je ustvarjanje naključnih števil med 1 in 10. Sledi program C ++, ki ustvarja naključna števila.
Funkcijo srand pokličemo s sistemsko uro, nato pa funkcijo rand z operaterji modula 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Izhod:
V zgornjem programu ustvarimo prvih 10 naključnih števil med 1 in 10. Upoštevajte, da bo vsakič, ko se program zažene, ustvaril različne nabore števil zaradi klicane funkcije srand.
Pogosto zastavljena vprašanja
V # 1) Kaj je datoteka glave za naključno funkcijo v C ++?
Odgovor: Funkcije za generiranje naključnih števil, rand in srand so določene v< cstdlib > glava C ++.
V # 2) Kaj je Rand_max v jeziku C ++?
Odgovor: RAND_MAX je konstanta v glavi, ki je običajno nastavljena na vrednost 32767. Generator psevdonaključnih števil (PRNG) generira naključna števila med 0 in RAND_MAX.
V # 3) Kako deluje naključna funkcija?
Odgovor: C ++ podpira dve naključni funkciji, tj. srand () in rand (). Funkcija srand () zaseje generator naključnih števil, ki ga uporablja funkcija rand (), ki generira zaporedje naključnih števil, odvisno od začetnega podanega semena.
V # 4) Kako se preživljate s časom?
Odgovor: Funkcija srand zaseva generator psevdonaključnih števil (PRNG), ki ga uporablja funkcija rand (). Običajna praksa je, da se rezultat klica na čas (0) uporablja kot seme. Ta časovna funkcija vrne vrednost, število sekund od 00:00 ure, 1. januarja 1970, UTC (trenutni časovni žig UNIX).
Tako se vrednost semena spreminja vsako sekundo. Zato se vsakič, ko srand pokliče s časovno funkcijo, ustvari nov niz naključnih števil.
Zaključek
V tej vadnici smo podrobno razpravljali o naključnem številu. Programski jeziki ali na splošno računalniki ne ustvarjajo naključnih števil, saj so zasnovani tako, da dajejo napovedne rezultate. Zato moramo simulirati naključnost.
Za simulacijo naključnosti uporabljamo generator psevdonaključnih števil (PRNG), ki je vgrajen v C ++. Tako lahko z uporabo dveh funkcij, rand () in srand (), v C ++ ustvarimo naključna števila.
Funkcija srand () se uporablja za zagotavljanje semena za generiranje naključnih števil, medtem ko funkcija rand () generira naslednje naključno število v zaporedju.
=> Poiščite celotno serijo usposabljanj za C ++ tukaj.
Priporočeno branje
- Naključna številka C # in generator naključnega niza C # s primeri kod
- Vadnica za glavne funkcije Pythona s praktičnimi primeri
- Vadnica za cevi Unix: Cevi v programiranju Unix
- Rekurzija v C ++
- Prijateljske funkcije v C ++
- Polimorfizem v jeziku C ++
- Objektno usmerjeno programiranje v jeziku C ++
- OOP Java: Uvod v objektno usmerjeno programiranje v Javi