C Programovanie

Funkcia rand () v jazyku C

Funkcia rand () v jazyku C
V jazyku C: rand () funkcia sa používa pre Generátor pseudo čísel (PRNG). Náhodné čísla generované funkciou rand () nie sú skutočne náhodné. Je to postupnosť, ktorá sa periodicky opakuje, ale perióda je taká veľká, že ju môžeme ignorovať. The rand () Funkcia funguje zapamätaním si počiatočnej hodnoty, ktorá sa používa na výpočet ďalšieho náhodného čísla a ďalšieho nového semena. V tomto článku sa budeme podrobne zaoberať tým, ako je možné generovať náhodné čísla pomocou funkcie rand () funkcia. Takže poďme na to!

Hlavičkový súbor:

stdlib.h

Syntax:

int rand (neplatný)

Návratové hodnoty:

Táto funkcia vráti ďalšie pseudonáhodné číslo v rade. Hodnota rozsahu číselných radov je medzi 0 a RAND_MAX. RAND_MAX je makro definované v stdlib.h hlavičkový súbor, ktorého hodnota je maximálna hodnota, ktorá sa môže vrátiť pomocou funkcie rand (). Hodnota RAND_MAX je vyššia, ale nie nižšia ako 32767, v závislosti od knižníc C.

// Príklad1.c
#include
#include
int main ()

int i;
printf ("10 náhodných čísel => \ n");
pre (i = 0; i<10;i++)

printf ("% d", rand ());

printf ("\ n");
návrat 0;


V príklade 1.c, zavoláme funkciu rand () v každej iterácii cyklu for a vytlačíme návratovú hodnotu funkcie. Poradie hodnôt funkcie rand () je rovnaké pri každom spustení programu. Predvolene je počiatočná funkcia funkcie rand nastavená na 1.

Semeno pre funkciu rand môžeme nastaviť pomocou srand () funkcia. Osivo je možné nastaviť iba raz a pred prvým použitím rand () volanie funkcie.

funkcia srand ():

Hlavičkový súbor:

stdlib.h

Syntax:

int srand (nepodpísané int seed)

Argumenty:

Táto funkcia má 1 argument

semienko: Celá hodnota použitá ako zárodok pre novú sériu pseudonáhodných čísel.

Návratové hodnoty:

Žiadne

// Príklad2.c
#include
#include
#include
int main ()

int i;
srand (čas (0));
printf ("10 náhodných čísel => \ n");
pre (i = 0; i<10;i++)

printf ("% d", rand ());

printf ("\ n");
návrat 0;


V príklade 2.c, použili sme funkciu srand () na nastavenie počiatočného semena sekvencie náhodných čísel vygenerovanej funkciou rand (). Pri každom spustení programu sa vygeneruje iná postupnosť. Vo funkcii srand (), time (0) (deklarovaná v čas.h hlavičkový súbor) sa používa ako zárodok. Táto funkcia času (0) vracia počet sekúnd, ktoré uplynuli od epochy (00:00:00, 1. januára 1970). Toto môže stále produkovať rovnaké sekvencie, ak program spustíte v rovnakom čase.

// Príklad3.c
#include
#include
#include
int main ()

int i;
srand (čas (0));
printf ("10 náhodných čísel medzi 1 a 10 => \ n");
pre (i = 0; i<10;i++)

printf ("% d", (rand ()% 10) + 1);

printf ("\ n");
návrat 0;


V príklade 3.c videli sme, ako možno generovať náhodné čísla medzi 1 a 10.

// Príklad4.c
#include
#include
#include
int main ()

int i, max, min;
printf ("Zadajte minimálnu hodnotu =>");
scanf ("% d", & min);
printf ("Zadajte maximálnu hodnotu =>");
scanf ("% d", & max);
ak (min> max)

printf ("Minimálna hodnota je väčšia ako maximálna hodnota \ n");
návrat 0;

srand (čas (0));
printf ("10 náhodných čísel medzi% d a% d => \ n", min, max);
pre (i = 0; i<10;i++)

printf ("% d", (rand ()% (max - min +1)) + min);

printf ("\ n");
návrat 0;


V príklade 4.c vzali sme rozsah od používateľa a vygenerovali náhodné číslo v tomto rozmedzí. Vzorec je: rand ()% (max - min +1)) + min

// Príklad5.c
#include
#include
#include
int main ()

int i;
srand (čas (0));
printf ("10 náhodných čísel medzi 0.0 a 1.0 => \ n ");
pre (i = 0; i<10;i++)

printf ("% f", ((float) rand () / RAND_MAX));

printf ("\ n");
návrat 0;


V príklade 5.c, videli sme, ako môžeme generovať náhodné čísla medzi floatom 0.0 a 1.0 Vzorec je: (float) rand () / RAND_MAX)

// Príklad6.c
#include
#include
#include
int main ()

int i;
float max, min;
printf ("Zadajte minimálnu hodnotu =>");
scanf ("% f", & min);
printf ("Zadajte maximálnu hodnotu =>");
scanf ("% f", & max);
ak (min> max)

printf ("Minimálna hodnota je väčšia ako maximálna hodnota \ n");
návrat 0;

srand (čas (0));
printf ("10 náhodných čísel medzi% f a% f => \ n", min, max);
pre (i = 0; i<10;i++)

printf ("% f", min + ((float) rand () / (RAND_MAX / (max - min))));

printf ("\ n");
návrat 0;


V príklade 6.c, vzali sme rozsah od používateľa a vygenerovali náhodné číslo v tomto rozsahu (obe vrátane). Vzorec je: min + ((float) rand () / (RAND_MAX / (max - min)))

Záver:

V tomto článku sme sa dozvedeli, ako je možné generovať náhodné čísla pomocou funkcie rand () a srand () funkcia. Neexistujú žiadne záruky kvality náhodných čísel generovaných funkciou rand, na bežné použitie je to však dosť dobré.

Hry Vulkan pre používateľov systému Linux
Vulkan pre používateľov systému Linux
S každou novou generáciou grafických kariet vidíme, že vývojári hier posúvajú hranice grafickej vernosti a prichádzajú o krok bližšie k fotorealizmu. ...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvorenie vlastnej simulácie dopravy môže byť zábavné, relaxačné a mimoriadne lákavé. Preto sa musíte uistiť, že vyskúšate čo najviac hier, aby ste n...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z najpopulárnejších obchodných simulačných hier. V tejto hre musíte vytvoriť úžasné dopravné podnikanie. Začnete však na začiatku ok...