rand () Függvény C nyelven

Rand Function C Language



A C nyelvben a sor() funkciót használják Pszeudo számgenerátor (PRNG) . A rand () függvény által generált véletlen számok nem igazán véletlenszerűek. Ez egy sorozat, amely periodikusan ismétlődik, de az időszak olyan nagy, hogy figyelmen kívül hagyhatjuk. Az sor() A funkció úgy működik, hogy megjegyzi a vetőmag értékét, amely a következő véletlen szám és a következő új mag kiszámítására szolgál. Ebben a cikkben részletesen megvitatjuk, hogyan lehet véletlen számokat előállítani a sor() funkció. Szóval, kezdjük el!

Fejlécfájl:

stdlib.h







Szintaxis:

int rand (érvénytelen)



Visszaadási értékek:

Ez a függvény a sorozat következő pszeudo-véletlen számát adja vissza. A számsor tartomány értéke 0 és RAND_MAX között van. A RAND_MAX itt definiált makró stdlib.h fejlécfájl, amelynek értéke a maximális érték, amelyet rand () függvénnyel lehet visszaadni. A RAND_MAX értéke nagyobb, de nem kevesebb, mint 32767 a C könyvtáraktól függően.



//Példa1.c

#befoglalni
#befoglalni

intfő-()
{

intén;

printf ('10 Véletlen számok => n');

számára(én=0;én<10;én++)
{
printf ('%d', sor ());
}

printf (' n');
Visszatérés 0;
}


Az 1.c példában meghívjuk a rand () függvényt a ciklus minden iterációjában, és kinyomtatjuk a függvény visszatérési értékét. A rand () függvény értékrendje minden alkalommal ugyanaz, amikor futtatjuk a programot. Alapértelmezés szerint a rand függvény magja 1 -re van állítva.





Beállíthatjuk a magot a rand függvényhez a srand () funkció. A vetőmag csak egyszer és az első alkalom előtt állítható be sor() függvényhívás.

srand () függvény:

Fejlécfájl:

stdlib.h



Szintaxis:

int srand (nem aláírt int mag)

Érvek:

Ez a függvény 1 argumentumot tartalmaz

mag: Egy egész szám, amelyet vetőmagként használnak az ál-véletlen számok új sorozatához.

Visszaadási értékek:

Egyik sem

//Példa2.c

#befoglalni
#befoglalni
#befoglalni

intfő-()
{

intén;

srand ( idő (0));

printf ('10 Véletlen számok => n');

számára(én=0;én<10;én++)
{
printf ('%d', sor ());
}

printf (' n');
Visszatérés 0;
}


A 2.c példában a srand () függvénnyel állítottuk be a rand () függvény által generált véletlenszám -sorozat kezdeti magját. A program minden egyes futtatásakor más sorrend jön létre. Srand (), idő (0) függvény (in idő.h fejléc fájl) vetőmagként használható. Ez az idő (0) függvény a korszak óta eltelt másodpercek számát adja vissza (00:00:00, 1970. január 1.). Ez még mindig ugyanazokat a sorozatokat eredményezheti, ha ugyanazon a másodpercen belül futtatja a programot.

//Példa3.c

#befoglalni
#befoglalni
#befoglalni

intfő-()
{

intén;

srand ( idő (0));

printf ('10 Véletlen szám 1 és 10 között => n');

számára(én=0;én<10;én++)
{
printf ('%d',( sor () %10) + 1);
}

printf (' n');
Visszatérés 0;
}


A 3.c példában láttuk, hogyan lehet véletlen számokat generálni 1 és 10 között.

//Példa4.c

#befoglalni
#befoglalni
#befoglalni

intfő-()
{

intén,max,min;

printf ('Adja meg a minimális értéket =>');
scanf ('%d', &min);
printf ('Adja meg a maximális értéket =>');
scanf ('%d', &max);

ha(min>max)
{
printf ('A minimális érték nagyobb, mint a maximális érték n');
Visszatérés 0;
}

srand ( idő (0));


printf ('10 Véletlen számok %d és %d között => n',min,max);

számára(én=0;én<10;én++)
{
printf ('%d',( sor () % (max-min+1)) +min);
}

printf (' n');
Visszatérés 0;
}


A4.c példában a felhasználótól vettük a tartományt, és ezen a tartományon belül véletlen számot generáltunk. A képlet a következő: rand ()% (max - min +1)) + min

//Példa5.c

#befoglalni
#befoglalni
#befoglalni

intfő-()
{

intén;

srand ( idő (0));

printf ('10 Véletlen szám 0,0 és 1,0 között => n');

számára(én=0;én<10;én++)
{
printf ('%f',((úszó) sor () /RAND_MAX));
}

printf (' n');
Visszatérés 0;
}


Az 5.c példában láttuk, hogyan hozhatunk létre véletlen számokat az úszó 0.0 és 1.0 között. A képlet a következő: (float) rand () /RAND_MAX)

//Példa6.c

#befoglalni
#befoglalni
#befoglalni

intfő-()
{

intén;
úszómax,min;

printf ('Adja meg a minimális értéket =>');
scanf ('%f', &min);
printf ('Adja meg a maximális értéket =>');
scanf ('%f', &max);

ha(min>max)
{
printf ('A minimális érték nagyobb, mint a maximális érték n');
Visszatérés 0;
}

srand ( idő (0));

printf ('10 Véletlen számok %f és %f => között n',min,max);

számára(én=0;én<10;én++)
{
printf ('%f',min+ ((úszó) sor () /(RAND_MAX/(max-min))));
}

printf (' n');
Visszatérés 0;
}


A 6.c példában a felhasználótól vettük a tartományt, és ezen a tartományon belül véletlenszerű számot generáltunk (mindkettőt beleértve). A képlet a következő: min + ((float) rand () /(RAND_MAX /(max - min)))

Következtetés:

Ebben a cikkben megtanultuk, hogyan lehet véletlen számokat előállítani a sor() és srand () funkció. A rand függvény által generált véletlen számok minőségére nincs garancia, de alkalmi használatra elég jó.