Soubor záhlaví:
stdlib.h
Syntax:
int rand (neplatný)
Návratové hodnoty:
Tato funkce vrací další pseudonáhodné číslo v řadě. Hodnota rozsahu číselné řady je mezi 0 a RAND_MAX. RAND_MAX je makro definované v stdlib.h hlavičkový soubor, jehož hodnota je maximální hodnota, kterou lze vrátit pomocí funkce rand (). Hodnota RAND_MAX je větší, ale ne méně než 32767, v závislosti na knihovnách C.
// Příklad 1.C#zahrnout
#zahrnout
int main ()
int i;
printf ("10 náhodných čísel => \ n");
pro (i = 0; i<10;i++)
printf ("% d", rand ());
printf ("\ n");
návrat 0;
V příkladu 1.c, zavoláme funkci rand () v každé iteraci smyčky for a vytiskneme návratovou hodnotu funkce. Sekvence hodnot funkce rand () je stejná při každém spuštění programu. Ve výchozím nastavení je osivo funkce rand nastaveno na 1.
Můžeme nastavit osivo pro funkci rand pomocí srand () funkce. Osivo lze nastavit pouze jednou, a to poprvé rand () volání funkce.
funkce srand ():
Soubor záhlaví:
stdlib.h
Syntax:
int srand (unsigned int seed)
Argumenty:
Tato funkce má 1 argument
semínko: Celočíselná hodnota použitá jako zárodek pro novou řadu pseudonáhodných čísel.
Návratové hodnoty:
Žádný
// Příklad 2.C#zahrnout
#zahrnout
#zahrnout
int main ()
int i;
srand (čas (0));
printf ("10 náhodných čísel => \ n");
pro (i = 0; i<10;i++)
printf ("% d", rand ());
printf ("\ n");
návrat 0;
V příkladu 2.c, použili jsme funkci srand () k nastavení počátečního semene sekvence náhodných čísel generované funkcí rand (). Při každém spuštění programu se vygeneruje jiná sekvence. Ve funkci srand (), time (0) (deklarováno v čas.h záhlaví souboru) se používá jako semeno. Tato funkce času (0) vrací počet sekund, které uplynuly od epochy (00:00:00, 1. ledna 1970). To může způsobit stejné sekvence, pokud program spustíte ve stejnou sekundu.
#zahrnout
#zahrnout
#zahrnout
int main ()
int i;
srand (čas (0));
printf ("10 náhodných čísel mezi 1 a 10 => \ n");
pro (i = 0; i<10;i++)
printf ("% d", (rand ()% 10) + 1);
printf ("\ n");
návrat 0;
V příkladu 3.c viděli jsme, jak lze generovat náhodná čísla mezi 1 a 10.
#zahrnout
#zahrnout
#zahrnout
int main ()
int i, max, min;
printf ("Zadejte minimální hodnotu =>");
scanf ("% d", & min);
printf ("Zadejte maximální hodnotu =>");
scanf ("% d", & max);
pokud (min> max)
printf ("Minimální hodnota je větší než maximální hodnota \ n");
návrat 0;
srand (čas (0));
printf ("10 náhodných čísel mezi% d a% d => \ n", min, max);
pro (i = 0; i<10;i++)
printf ("% d", (rand ()% (max - min +1)) + min);
printf ("\ n");
návrat 0;
V příkladu 4.c vzali jsme rozsah od uživatele a vygenerovali náhodné číslo v tomto rozsahu. Vzorec je: rand ()% (max - min +1)) + min
#zahrnout
#zahrnout
#zahrnout
int main ()
int i;
srand (čas (0));
printf ("10 náhodných čísel mezi 0.0 a 1.0 => \ n ");
pro (i = 0; i<10;i++)
printf ("% f", ((float) rand () / RAND_MAX));
printf ("\ n");
návrat 0;
V příkladu 5.c, viděli jsme, jak můžeme generovat náhodná čísla mezi floatem 0.0 a 1.0 Vzorec je: (float) rand () / RAND_MAX)
#zahrnout
#zahrnout
#zahrnout
int main ()
int i;
float max, min;
printf ("Zadejte minimální hodnotu =>");
scanf ("% f", & min);
printf ("Zadejte maximální hodnotu =>");
scanf ("% f", & max);
pokud (min> max)
printf ("Minimální hodnota je větší než maximální hodnota \ n");
návrat 0;
srand (čas (0));
printf ("10 náhodných čísel mezi% f a% f => \ n", min, max);
pro (i = 0; i<10;i++)
printf ("% f", min + ((float) rand () / (RAND_MAX / (max - min))));
printf ("\ n");
návrat 0;
V příkladu 6.c, vzali jsme rozsah od uživatele a vygenerovali náhodné číslo v tomto rozsahu (včetně). Vzorec je: min + ((float) rand () / (RAND_MAX / (max - min)))
Závěr:
V tomto článku jsme se naučili, jak lze generovat náhodná čísla pomocí rand () a srand () funkce. Neexistují žádné záruky ohledně kvality náhodných čísel generovaných funkcí rand, ale pro běžné použití je to dost dobré.