Vytváření náhodných celých čísel v určitém rozsahu v programovacím jazyce C není tak jednoduché, jak se může zdát. C samo o sobě pro to nemá vyhrazenou funkci, ale poskytuje řadu nástrojů, které lze k dosažení tohoto cíle kombinovat. Koncept generování těchto čísel se točí kolem využití náhodných čísel a specifického rozsahu.
Doslova řečeno, náhodná čísla generovaná v určitých rozsazích mohou být docela užitečná v mnoha aplikacích ve světě programování, jako je vytváření jedinečných ID, počítačová grafika, hry, simulace, testování a mnoho dalších.
Knihovny a funkce při generování náhodných čísel
Pro generování náhodných čísel v C používáme stdlib.h si čas. h knihovny. The rand() Funkce je součástí knihovny stdlib.h, a protože nebere žádné argumenty, generuje při každém spuštění programu stejnou sekvenci náhodných čísel. Abychom to omezili, používáme srand() funkce, která mění základ pseudonáhodného generátoru.
#include
#include
#include
int hlavní () {
srand(čas(0));
for(int i = 0; i<5; i++){ printf(" %d ", rand()); } návrat 0; } [/kód]
Řešení: Generování náhodných čísel v určitém rozsahu
Výše uvedený kód vygeneruje libovolné náhodné číslo. Chcete-li vygenerovat náhodné číslo v určitém rozsahu, můžete použít tento vzorec: (rand() % (horní – dolní + 1)) + nižší kde dolní je dolní mez a horní je horní mez rozsahu, ve kterém chcete náhodná čísla.
Zde je podrobný rozpis celého procesu:
- Za prvé, používáme čas() funkce pro získání aktuálního času systému.
- Poté použijeme srand() funkce pro nasazení generátoru náhodných čísel.
- Poté použijeme rand() funkce pro generování náhodného čísla.
- Nakonec vygenerované číslo přivedeme do požadovaného rozsahu pomocí výše uvedeného vzorce.
Zde je příklad úryvku kódu:
#include
#include
#include
int hlavní () {
int dolní = 50, horní = 100;
srand(čas(0));
for(int i = 0; i<5; i++){ printf(" %d ", (rand() % (horní - dolní + 1)) + dolní); } návrat 0; } [/code] Ve výše uvedeném úryvku kódu budou vygenerovaná náhodná čísla v rozsahu 50 až 100.
Demytizace kodexu
Všimněte si, že jsme předali `time(0)` do srand() funkce. To má zajistit, aby naše náhodná čísla byla co nejnáhodnější. čas() vrací aktuální kalendářní čas, který se mění každou sekundu, a proto je dobré jej použít k seedování našeho generátoru náhodných čísel.
Vzorec `(rand() % (upper – lower + 1)) + lower` může na první pohled vypadat matoucí, ale je celkem jednoduchý. rand() vygeneruje náhodné číslo. Když vezmeme modul tohoto čísla s `(horní – dolní + 1)`, dostaneme v podstatě zbytek dělení čísla `(horní – dolní + 1)`. Výsledek operace modulu je vždy menší než dělitel. Přidáním spodní hranice zajistíme, že naše náhodné číslo bude alespoň spodní hranice.
Nyní můžete generovat náhodná čísla v jakémkoli daném rozsahu v C! Šťastné programování!