rand() Funkcja w języku C

Rand Function C Language



W języku C wiersz() funkcja służy do Generator pseudoliczbów (PRNG) . Liczby losowe generowane przez funkcję rand() nie są naprawdę losowe. Jest to sekwencja, która cyklicznie się powtarza, ale okres jest tak duży, że możemy go zignorować. ten wiersz() Funkcja działa poprzez zapamiętanie wartości ziarna, która jest używana do obliczenia następnej liczby losowej i następnego nowego ziarna. W tym artykule omówimy szczegółowo, w jaki sposób można generować liczby losowe za pomocą wiersz() funkcjonować. Więc zacznijmy!

Plik nagłówka:

standardowa biblioteka.h







Składnia:

int rand (unieważnienie)



Zwracane wartości:

Ta funkcja zwraca następną liczbę pseudolosową w serii. Wartość zakresu serii liczb zawiera się w przedziale od 0 do RAND_MAX. RAND_MAX to makro zdefiniowane w standardowa biblioteka.h plik nagłówkowy, którego wartością jest maksymalna wartość, jaką może zwrócić funkcja rand(). Wartość RAND_MAX jest większa, ale nie mniejsza niż 32767 w zależności od bibliotek C.



//Przykład1.c

#włączać
#włączać

intGłówny()
{

inti;

printf ('10 liczb losowych => ');

dla(i=0;i<10;i++)
{
printf ('%D ', wiersz ());
}

printf (' ');
powrót 0;
}


W przykładzie 1.c wywołujemy funkcję rand() w każdej iteracji pętli for i wyświetlamy wartość zwracaną przez funkcję. Sekwencja wartości funkcji rand() jest taka sama za każdym razem, gdy uruchamiamy program. Domyślnie ziarno funkcji rand jest ustawione na 1.





Możemy ustawić ziarno dla funkcji rand za pomocą srand() funkcjonować. Ziarno można założyć tylko raz i przed pierwszym wiersz() wywołanie funkcji.

funkcja srand():

Plik nagłówka:

standardowa biblioteka.h



Składnia:

int srand (niepodpisany int seed)

Argumenty:

Ta funkcja przyjmuje 1 argument

nasionko: Liczba całkowita używana jako ziarno nowej serii liczb pseudolosowych.

Zwracane wartości:

Nic

//Przykład2.c

#włączać
#włączać
#włączać

intGłówny()
{

inti;

srand ( czas (0));

printf ('10 liczb losowych => ');

dla(i=0;i<10;i++)
{
printf ('%D ', wiersz ());
}

printf (' ');
powrót 0;
}


W przykładzie2.c użyliśmy funkcji srand() do ustawienia początkowego ziarna sekwencji liczb losowych wygenerowanej przez funkcję rand(). Za każdym razem, gdy program jest uruchamiany, generowana jest inna sekwencja. W srand() funkcja time(0) (zadeklarowana w czas.h plik nagłówkowy) jest używany jako ziarno. Ta funkcja time(0) zwraca liczbę sekund, które upłynęły od epoki (00:00:00, 1 stycznia 1970). Może to nadal generować te same sekwencje, jeśli uruchomisz program w tej samej sekundzie.

//Przykład3.c

#włączać
#włączać
#włączać

intGłówny()
{

inti;

srand ( czas (0));

printf ('10 liczb losowych od 1 do 10=> ');

dla(i=0;i<10;i++)
{
printf ('%D ',( wiersz () %10) + 1);
}

printf (' ');
powrót 0;
}


W przykładzie 3.c widzieliśmy, jak można generować liczby losowe od 1 do 10.

//Przykład4.c

#włączać
#włączać
#włączać

intGłówny()
{

inti,maks,min;

printf ('Wprowadź wartość minimalną => ');
scanf ('%D', &min);
printf ('Wprowadź wartość maksymalną => ');
scanf ('%D', &maks);

Jeśli(min>maks)
{
printf („Wartość minimalna jest większa niż wartość maksymalna” ');
powrót 0;
}

srand ( czas (0));


printf ('10 liczb losowych od %d do %d=> ',min,maks);

dla(i=0;i<10;i++)
{
printf ('%D ',( wiersz () % (maks-min+1)) +min);
}

printf (' ');
powrót 0;
}


W przykładzie 4.c pobraliśmy zakres od użytkownika i wygenerowaliśmy losową liczbę z tego zakresu. Formuła to: rand ()% (maks - min +1)) + min

//Przykład5.c

#włączać
#włączać
#włączać

intGłówny()
{

inti;

srand ( czas (0));

printf ('10 liczb losowych od 0.0 do 1.0=> ');

dla(i=0;i<10;i++)
{
printf ('%F ',((pływak) wiersz () /RAND_MAX));
}

printf (' ');
powrót 0;
}


W przykładzie 5.c widzieliśmy, jak możemy generować liczby losowe między liczbami zmiennoprzecinkowymi 0.0 i 1.0. Wzór to: (zmiennoprzecinkowa)rand() /RAND_MAX)

//Przykład6.c

#włączać
#włączać
#włączać

intGłówny()
{

inti;
pływakmaks,min;

printf ('Wprowadź wartość minimalną => ');
scanf ('%F', &min);
printf ('Wprowadź wartość maksymalną => ');
scanf ('%F', &maks);

Jeśli(min>maks)
{
printf („Wartość minimalna jest większa niż wartość maksymalna” ');
powrót 0;
}

srand ( czas (0));

printf ('10 liczb losowych od %f do %f => ',min,maks);

dla(i=0;i<10;i++)
{
printf ('%F ',min+ ((pływak) wiersz () /(RAND_MAX/(maks-min))));
}

printf (' ');
powrót 0;
}


W przykładzie 6.c pobraliśmy zakres od użytkownika i wygenerowaliśmy losową liczbę z tego zakresu (włącznie). Formuła to: min + ((zmiennoprzecinkowa)rand() /(RAND_MAX/(maks. – min)))

Wniosek:

W tym artykule dowiedzieliśmy się, jak można generować liczby losowe za pomocą wiersz() oraz srand() funkcjonować. Nie ma gwarancji co do jakości liczb losowych generowanych przez funkcję rand, ale jest wystarczająco dobra do zwykłego użytku.