funkcija rand () na jeziku C

Rand Function C Language

U jeziku C, red() funkcija se koristi za Generator pseudo broja (PRNG) . Slučajni brojevi generirani funkcijom rand () nisu uistinu slučajni. To je niz koji se periodično ponavlja, ali je razdoblje toliko veliko da ga možemo zanemariti. The red() funkcija radi tako da zapamti početnu vrijednost koja se koristi za izračun sljedećeg slučajnog broja i sljedećeg novog sjemena. U ovom ćemo članku detaljno razmotriti kako se slučajni brojevi mogu generirati pomoću red() funkcija. Dakle, krenimo!

Datoteka zaglavlja:

stdlib.h



Sintaksa:

int rand (ništavno)



Povratne vrijednosti:

Ova funkcija vraća sljedeći pseudo-slučajni broj u nizu. Vrijednost raspona nizova brojeva je između 0 i RAND_MAX. RAND_MAX je makro definiran u stdlib.h header datoteku, čija je vrijednost najveća vrijednost, koja se može vratiti pomoću funkcije rand (). Vrijednost RAND_MAX je veća, ali ne manja od 32767 ovisno o C knjižnicama.



// Primjer1.c

#uključi
#uključi

intglavni()
{

inti;

printf ('10 Slučajni brojevi => n');

za(i=0;i<10;i++)
{
printf ('%d', red ());
}

printf (' n');
povratak 0;
}


U primjeru 1.c pozivamo funkciju rand () u svakoj iteraciji for petlje i ispisujemo povratnu vrijednost funkcije. Niz vrijednosti funkcije rand () isti je svaki put kada pokrenemo program. Prema zadanim postavkama, sjeme funkcije rand postavljeno je na 1.

Sjeme za funkciju rand možemo postaviti pomoću srand () funkcija. Sjeme se može postaviti samo jednom, a prije prvog puta red() poziv funkcije.

funkcija srand ():

Datoteka zaglavlja:

stdlib.h



Sintaksa:

int srand (nepotpisano int sjeme)

Argumenti:

Ova funkcija uzima 1 argument

sjeme: Cijela vrijednost koja se koristi kao sjeme za novu seriju pseudo-slučajnih brojeva.

Povratne vrijednosti:

Nijedan

// Primjer2.c

#uključi
#uključi
#uključi

intglavni()
{

inti;

srand ( vrijeme (0));

printf ('10 Slučajni brojevi => n');

za(i=0;i<10;i++)
{
printf ('%d', red ());
}

printf (' n');
povratak 0;
}


U primjeru 2.c, koristili smo funkciju srand () za postavljanje početnog sjemena niza slučajnih brojeva generiranih funkcijom rand (). Svaki put kada se program pokrene, generira se drugačiji slijed. U srand (), funkcija time (0) (deklarirano u vrijeme.h header file) koristi se kao sjeme. Ova funkcija (0) vraća broj sekundi proteklih od epohe (00:00:00, 1. siječnja 1970.). Ovo i dalje može proizvesti iste sekvence ako program pokrenete u istoj sekundi.

// Primjer3.c

#uključi
#uključi
#uključi

intglavni()
{

inti;

srand ( vrijeme (0));

printf ('10 Slučajni brojevi između 1 i 10 => n');

za(i=0;i<10;i++)
{
printf ('%d',( red () %10) + 1);
}

printf (' n');
povratak 0;
}


U primjeru 3.c vidjeli smo kako se slučajni brojevi mogu generirati između 1 i 10.

// Primjer4.c

#uključi
#uključi
#uključi

intglavni()
{

inti,maks,min;

printf ('Unesite minimalnu vrijednost =>');
scanf ('%d', &min);
printf ('Unesite maksimalnu vrijednost =>');
scanf ('%d', &maks);

ako(min>maks)
{
printf ('Minimalna vrijednost veća je od maksimalne vrijednosti n');
povratak 0;
}

srand ( vrijeme (0));


printf ('10 Slučajni brojevi između %d i %d => n',min,maks);

za(i=0;i<10;i++)
{
printf ('%d',( red () % (maks-min+1)) +min);
}

printf (' n');
povratak 0;
}


U primjeru 4.c uzeli smo raspon od korisnika i generirali slučajni broj unutar tog raspona. Formula je: rand ()% (max - min +1)) + min

// Primjer5.c

#uključi
#uključi
#uključi

intglavni()
{

inti;

srand ( vrijeme (0));

printf ('10 Slučajni brojevi između 0,0 i 1,0 => n');

za(i=0;i<10;i++)
{
printf ('%f',((plutati) red () /RAND_MAX));
}

printf (' n');
povratak 0;
}


U primjeru 5.c vidjeli smo kako možemo generirati slučajne brojeve između float 0.0 i 1.0. Formula je: (float) rand () /RAND_MAX)

// Primjer6.c

#uključi
#uključi
#uključi

intglavni()
{

inti;
plutatimaks,min;

printf ('Unesite minimalnu vrijednost =>');
scanf ('%f', &min);
printf ('Unesite maksimalnu vrijednost =>');
scanf ('%f', &maks);

ako(min>maks)
{
printf ('Minimalna vrijednost veća je od maksimalne vrijednosti n');
povratak 0;
}

srand ( vrijeme (0));

printf ('10 Slučajni brojevi između %f i %f => n',min,maks);

za(i=0;i<10;i++)
{
printf ('%f',min+ ((plutati) red () /(RAND_MAX/(maks-min))));
}

printf (' n');
povratak 0;
}


U Primjeru6.c, uzeli smo raspon od korisnika i generirali nasumični broj unutar tog raspona (oba uključivo). Formula je: min + ((float) rand () /(RAND_MAX /(max - min)))

Zaključak:

U ovom smo članku naučili kako se slučajni brojevi mogu generirati pomoću red() i srand () funkcija. Nema jamstava za kvalitetu slučajnih brojeva generiranih rand funkcijom, ali je dovoljno dobra za povremenu uporabu.