rand () Funkce v jazyce C.

Rand Function C Language



V jazyce C se řádek() funkce se používá pro Generátor pseudo čísel (PRNG) . Náhodná čísla generovaná funkcí rand () nejsou skutečně náhodná. Je to sekvence, která se periodicky opakuje, ale období je tak velké, že jej můžeme ignorovat. The řádek() funkce funguje tak, že si zapamatuje počáteční hodnotu, která se používá k výpočtu dalšího náhodného čísla a dalšího nového semene. V tomto článku budeme podrobně diskutovat o tom, jak lze generovat náhodná čísla pomocí řádek() funkce. Začněme tedy!

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 menší než 32767 v závislosti na knihovnách C.



// Příklad1.c

#zahrnout
#zahrnout

inthlavní()
{

int;

printf ('10 Náhodná čísla => n');

pro(=0;<10;++)
{
printf ('%d', řádek ());
}

printf (' n');
vrátit se 0;
}


V Příklad1.c voláme funkci rand () v každé iteraci smyčky for a vytiskneme návratovou hodnotu funkce. Pořadí hodnot funkce rand () je stejné při každém spuštění programu. Ve výchozím nastavení je počáteční hodnota funkce rand nastavena na 1.





Osivo pro funkci rand můžeme nastavit pomocí srand () funkce. Osivo lze nastavit pouze jednou a před prvním použitím řádek() volání funkce.

funkce srand ():

Soubor záhlaví:

stdlib.h



Syntax:

int srand (nepodepsané int seed)

Argumenty:

Tato funkce má 1 argument

semínko: Celočíselná hodnota používaná jako počáteční hodnota pro novou řadu pseudonáhodných čísel.

Návratové hodnoty:

Žádný

// Příklad2.c

#zahrnout
#zahrnout
#zahrnout

inthlavní()
{

int;

srand ( čas (0));

printf ('10 Náhodná čísla => n');

pro(=0;<10;++)
{
printf ('%d', řádek ());
}

printf (' n');
vrátit se 0;
}


V příkladu2.c jsme použili 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í) se používá jako osivo. Funkce time (0) vrací počet sekund, které uplynuly od epochy (00:00:00, 1. ledna 1970). To může stále vytvářet stejné sekvence, pokud spustíte program ve stejné sekundě.

//Příklad3.c

#zahrnout
#zahrnout
#zahrnout

inthlavní()
{

int;

srand ( čas (0));

printf ('10 náhodných čísel mezi 1 a 10 => n');

pro(=0;<10;++)
{
printf ('%d',( řádek () %10) + 1);
}

printf (' n');
vrátit se 0;
}


V příkladu3.c jsme viděli, jak lze generovat náhodná čísla mezi 1 a 10.

//Příklad4.c

#zahrnout
#zahrnout
#zahrnout

inthlavní()
{

int,max,min;

printf ('Zadejte minimální hodnotu =>');
scanf ('%d', &min);
printf ('Zadejte maximální hodnotu =>');
scanf ('%d', &max);

-li(min>max)
{
printf („Minimální hodnota je větší než maximální hodnota n');
vrátit se 0;
}

srand ( čas (0));


printf ('10 Náhodná čísla mezi %d a %d => n',min,max);

pro(=0;<10;++)
{
printf ('%d',( řádek () % (max-min+1)) +min);
}

printf (' n');
vrátit se 0;
}


V příkladu4.c jsme vzali rozsah od uživatele a vygenerovali náhodné číslo v tomto rozsahu. Vzorec je: rand ()% (max - min +1)) + min

// Příklad 5.c

#zahrnout
#zahrnout
#zahrnout

inthlavní()
{

int;

srand ( čas (0));

printf ('10 náhodných čísel mezi 0,0 a 1,0 => n');

pro(=0;<10;++)
{
printf ('%f',((plovák) řádek () /RAND_MAX));
}

printf (' n');
vrátit se 0;
}


V příkladu 5.c jsme viděli, jak můžeme generovat náhodná čísla mezi floatem 0,0 a 1,0 Vzorec je: (float) rand () /RAND_MAX)

// Příklad 6.c

#zahrnout
#zahrnout
#zahrnout

inthlavní()
{

int;
plovákmax,min;

printf ('Zadejte minimální hodnotu =>');
scanf ('%F', &min);
printf ('Zadejte maximální hodnotu =>');
scanf ('%F', &max);

-li(min>max)
{
printf („Minimální hodnota je větší než maximální hodnota n');
vrátit se 0;
}

srand ( čas (0));

printf ('10 Náhodná čísla mezi %f a %f => n',min,max);

pro(=0;<10;++)
{
printf ('%f',min+ ((plovák) řádek () /(RAND_MAX/(max-min))));
}

printf (' n');
vrátit se 0;
}


V příkladu 6.c jsme vzali rozsah od uživatele a vygenerovali náhodné číslo v tomto rozsahu (oba včetně). Vzorec je: min + ((float) rand () /(RAND_MAX /(max - min)))

Závěr:

V tomto článku jsme se dozvěděli, jak lze generovat náhodná čísla pomocí řádek() a srand () funkce. Neexistují žádné záruky kvality náhodných čísel generovaných funkcí rand, ale pro běžné použití je to dost dobré.