random number generator c
Tento výukový program podrobne popisuje použitie funkcií rand () a srand () na generovanie náhodných čísel v C ++:
Mnohokrát vyžadujeme, aby sme v našej aplikácii používali náhodné čísla na výrobu simulácií alebo hier a iných aplikácií, ktoré si vyžadujú náhodné udalosti.
Napríklad, v hre s kockami, bez náhodných udalostí, sa nám pri každom hode kockou vyskočí rovnaká strana, čo prinesie nežiaduce výsledky.
Je preto nevyhnutné, aby sme mali k dispozícii generátor náhodných čísel. Vo fyzickom prostredí môžeme generovať náhodné udalosti, ale pokiaľ ide o počítače, nie je to možné.
=> Prečítajte si sériu Easy C ++ Training Series.
Je to tak preto, lebo všetko v počítačoch je binárne, t. J. 0 alebo 1 (pravda alebo nepravda) a nič medzi tým. Počítače teda zvyčajne generujú predvídateľné udalosti a nie sú schopné generovať náhodné udalosti.
Namiesto toho počítače simulujú náhodnosť, ktorá sa vykonáva pomocou generátor pseudonáhodných čísel (PRNG) . C ++ má generátor náhodných čísel a dá sa použiť v mnohých aplikáciách.
V tomto výučbe sa podrobne zaoberáme funkciami / prístupmi na generovanie náhodných čísel v jazyku C ++.
Čo sa dozviete:
- Generátor pseudonáhodných čísel (PRNG) v C ++
- Funkcie rand a srand v C ++
- Rozdiel medzi rand () a srand ()
- C ++ náhodný plavák
- Náhodné číslo v C ++ medzi 0 a 1
- Náhodné číslo v C ++ medzi 1 a 10
- často kladené otázky
- Záver
- Odporúčané čítanie
Generátor pseudonáhodných čísel (PRNG) v C ++
Všeobecne možno generátor pseudonáhodných čísel (PRNG) definovať ako program, ktorý vezme zárodok alebo počiatočné číslo a pomocou matematických operácií ho transformuje na iné číslo, ktoré sa líši od zárodku.
Tento proces sa vykonáva opakovane tak, že sa zakaždým vezme posledné vygenerované číslo. Zakaždým, keď vygenerované číslo nesúvisí s predchádzajúcimi číslami. Tento program je teda schopný generovať rad čísel, ktoré sa zdajú byť náhodné.
Jazyk C ++ je dodávaný so zabudovaným generátorom pseudonáhodných čísel a poskytuje dve funkcie rand () a srand (), ktoré možno použiť na generovanie náhodných čísel.
Pozrime sa podrobne na tieto dve funkcie.
ako hrať súbory .bin
Funkcie rand a srand v C ++
srand ()
Funkčný prototyp: void srand (unsigned int seed);
Parametre: seed - Celá hodnota, ktorá sa má použiť ako seed algoritmom generátora pseudonáhodných čísel.
Návratová hodnota: Žiadne
Popis: funkcia srand sa používa na inicializáciu sekvencie pseudonáhodných čísel s parametrom nazývaným ‘random seed’. Vytvára náhodný výstup funkcie rand. Inak bude výstup funkcie rand () rovnaký zakaždým, keď ju zavoláme.
Ak teda naočkujeme generátor náhodných čísel funkciou srand (), spustí sa generátor od bodu, ktorý je závislý na hodnote argumentu odovzdanej srandovi. Ak nastavíme generátor náhodných čísel so systémovým časom Napríklad, pred prvým volaním funkcie rand (), potom vygeneruje náhodné čísla zakaždým, keď spustíme program.
Upozorňujeme, že funkciu srand () musíme obvykle volať iba raz pred volaním funkcie rand (), a nie vždy, keď generujeme náhodné čísla.
rand ()
Funkčný prototyp: int rand (neplatný);
Parametre: žiadny
Návratová hodnota: Celé číslo medzi 0 a RAND_MAX.
Popis: Funkcia rand () generuje ďalšie náhodné číslo v poradí. Generované číslo je pseudonáhodné celé číslo medzi 0 a RAND_MAX. RAND_MAX je konštanta v hlavičke, ktorá je všeobecne nastavená na hodnotu 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; }
Výkon:
Vo vyššie uvedenom programe sme vygenerovali prvých 100 náhodných čísel tak, že sme zadali systémové hodiny ako zárodok pre funkciu srand. V tomto programe sme použili ako funkcie srand, tak aj rand. Všimnite si, že kvôli systémovým hodinám ako počiatočným sa generovaný výstup bude líšiť zakaždým, keď vykonáme program.
Rozdiel medzi rand () a srand ()
riadok () | srand () |
---|---|
Používa sa na generovanie náhodných čísel. | Naočkuje PRNG používaný funkciou rand (). |
Vyvolané toľkokrát, koľkokrát chceme vygenerovať náhodné čísla. | Volané iba raz, aby sa zobrazil generátor náhodných čísel. |
Neberie žiadne argumenty. | Berie parameter, ktorý sa používa na naočkovanie generátora náhodných čísel. |
Vráti postupnosť náhodných čísel pri každom vyvolaní. | Nevracia hodnotu. |
C ++ náhodný plavák
Funkcia rand (), ktorú sme v predvolenom nastavení videli vyššie, vracia celočíselnú hodnotu, ktorá môže v určitých prípadoch spôsobiť pretečenie. Môžeme teda použiť float alebo double value. Náhodné čísla typu float môžeme vygenerovať tak, že vrátime návratovú hodnotu funkcie rand () do funkcie „float“.
Nasledujúce teda vygeneruje náhodné číslo medzi floatom 0,0 a 1,0 (obe vrátane).
cout< Podobne nasledujúci riadok vygeneruje náhodné číslo medzi 1,2 a 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
V našom nasledujúcom príklade nižšie používame na generovanie výstupu náhodný float.
Náhodné číslo v C ++ medzi 0 a 1
Na generovanie náhodných čísel medzi 0 a 1 môžeme použiť funkciu srand () a rand (). Všimnite si, že výstup funkcie rand () musíme vrhnúť na desatinnú hodnotu, buď float alebo double.
Predvolená návratová hodnota funkcie rand (), t. J. Celé číslo, je nedostatočné na zobrazenie náhodných čísel od 0 do 1, ktoré sú zlomkami.
Program C ++ uvedený nižšie zobrazuje prvých päť náhodných čísel medzi 0 a 1.
sql otázky a odpovede na otázky pdf
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Výkon :

Vidíme, že výstupom programu je náhodné číslo medzi 0 a 1, ktoré sú zlomkami.
Ak nevrátime návratovú hodnotu funkcie rand () na float alebo double, potom dostaneme 0 ako náhodné číslo.
Náhodné číslo v C ++ medzi 1 a 10
Ďalším príkladom je generovanie náhodných čísel od 1 do 10. Nasleduje program C ++, ktorý generuje náhodné čísla.
Voláme funkciu srand so systémovými hodinami a potom voláme funkciu rand s operátormi modulu 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Výkon:

Vo vyššie uvedenom programe generujeme prvých 10 náhodných čísel medzi 1 a 10. Všimnite si, že zakaždým, keď je program spustený, vygeneruje rôzne množiny čísel, pretože sa volá funkcia srand.
často kladené otázky
Otázka č. 1) Čo je hlavičkový súbor pre náhodnú funkciu v C ++?
Odpoveď: Funkcie na generovanie náhodných čísel, rand a srand sú definované v< cstdlib > hlavička C ++.
Otázka 2) Čo je to Rand_max v C ++?
Odpoveď: RAND_MAX je konštanta v záhlaví všeobecne nastavená na hodnotu 32767. Generátor pseudonáhodných čísel (PRNG) generuje náhodné čísla medzi 0 a RAND_MAX.
Otázka 3) Ako funguje náhodná funkcia?
Odpoveď: C ++ podporuje dve náhodné funkcie, t.j. srand () a rand (). Funkcia srand () naočkuje generátor náhodných čísel používaný funkciou rand (), ktorý generuje postupnosť náhodných čísel v závislosti od poskytnutého počiatočného semena.
Otázka č. 4) Ako srandujete s časom?
Odpoveď: Funkcia sranda očkuje generátor pseudonáhodných čísel (PRNG), ktorý používa funkcia rand (). Je štandardným zvykom používať výsledok volania na čas (0) ako zárodok. Táto časová funkcia vráti hodnotu, počet sekúnd od 00:00 hodiny, 1. januára 1970, UTC (aktuálna časová značka UNIX).
Hodnota semena sa teda mení každú sekundu. Preto vždy, keď sa volá sranda s funkciou času, vygeneruje sa nová sada náhodných čísel.
Záver
V tomto návode sme sa podrobne zaoberali generovaním náhodných čísel. Programovacie jazyky alebo všeobecne počítače negenerujú náhodné čísla, pretože sú navrhnuté tak, aby poskytovali prediktívny výstup. Preto musíme simulovať náhodnosť.
Na simuláciu náhodnosti používame generátor pseudonáhodných čísel (PRNG), ktorý je zabudovaný v C ++. Pomocou dvoch funkcií, rand () a srand () teda môžeme generovať náhodné čísla v C ++.
Funkcia srand () sa používa na získanie semena na generovanie náhodných čísel, zatiaľ čo funkcia rand () generuje ďalšie náhodné číslo v poradí.
=> Celú sériu školení pre C ++ nájdete tu.
Odporúčané čítanie
- Generátor náhodných čísel C # a generátor náhodných reťazcov C # s príkladmi kódu
- Výukový program pre hlavné funkcie Pythonu s praktickými príkladmi
- Výukový program pre Unix Pipes: Rúry v programovaní v Unixe
- Rekurzia v C ++
- Funkcie priateľov v C ++
- Polymorfizmus v C ++
- Objektovo orientované programovanie v C ++
- OOP Java: Úvod do objektovo orientovaného programovania v Jave