W tym temacie dowiemy się o funkcji losowej i o tym, jak możemy wygenerować liczbę losową w języku programowania C. Jak wiemy, funkcja losowa służy do znalezienia liczby losowej pomiędzy dowolnymi dwiema zdefiniowanymi liczbami. W języku programowania C funkcja losowa ma dwie wbudowane funkcje: funkcję Rand() i funkcję srand(). Rozumiemy te funkcje w języku C.
funkcja Rand().
w Język programowania C , funkcja Rand() jest funkcją biblioteczną, która generuje liczbę losową z zakresu [0, RAND_MAX]. Kiedy używamy funkcji Rand() w programie, musimy zaimplementować funkcję stdlib.h nagłówkowy, ponieważ funkcja Rand() jest zdefiniowana w pliku nagłówkowym stdlib. Nie zawiera żadnego numeru nasion. Dlatego też, gdy wykonujemy ten sam program wielokrotnie, zwraca on te same wartości.
Uwaga: Jeśli za pomocą funkcji Rand() generowane są liczby losowe bez wywoływania funkcji srand(), zwraca ona te same sekwencje liczb przy każdym wykonaniu programu.
Składnia
int rand (void)
Funkcja Rand() zwraca losowe liczby całkowite z zakresu od 0 do RAND_MAX. RAND_MAX to stała symboliczna, która definiuje w pliku nagłówkowym stdlib.h, której wartość jest większa, ale mniejsza niż 32767, w zależności od bibliotek C.
kolejka priorytetowa
Wygeneruj liczby losowe za pomocą funkcji Rand().
Napiszmy program, który pobierze liczbę losową za pomocą funkcji Rand().
czy
#include #include #include void main() { // use rand() function to generate the number printf (' The random number is: %d', rand()); printf (' The random number is: %d', rand()); printf (' The random number is: %d', rand()); printf (' The random number is: %d', rand()); getch(); }
Wyjście
The random number is: 41 The random number is: 18467 The random number is: 6334 The random number is: 26500
Wygeneruj 5 liczb losowych za pomocą funkcji Rand().
Rozważmy program generujący 5 liczb losowych za pomocą funkcji Rand() w języku programowania C.
losowy.c
#include #include int main() { int i; /* It returns the same sequence of random number on every execution of the program. */ printf(' Random Numbers are: '); for (i = 0; i <5; i++) { printf(' %d', rand()); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Random Numbers are: 41 18467 6334 26500 19169 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Random Numbers are: 41 18467 6334 26500 19169 </pre> <p> <strong>3rd execution of the program</strong> </p> <pre> Random Numbers are: 41 18467 6334 26500 19169 </pre> <p>As we can see in the above output, it returns the same sequence of random numbers on every execution of the programming code.</p> <h3>Generate 10 random numbers from 1 to 100 using rand() function</h3> <p>Let's consider a program to find the random number in C using rand() function.</p> <p> <strong>rand_num.c</strong> </p> <pre> #include #include #include int main() { // declare the local variables int i, num; printf (' Program to get the random number from 1 to 100 '); for (i = 1; i <= 100 10; i++) { num="rand()" % + 1; use rand() function to get the random number printf (' %d ', num); getch(); } < pre> <p> <strong>Output</strong> </p> <pre> Program to get the random number from 1 to 100 42 68 35 1 70 25 79 59 63 65 </pre> <h2>srand() function</h2> <p>The srand() function is a C library function that determines the initial point to generate different series of pseudo-random numbers. A srand() function cannot be used without using a rand() function. The srand() function is required to set the value of the seed only once in a program to generate the different results of random integers before calling the rand() function.</p> <h3>Syntax</h3> <pre> int srand (unsigned int seed) </pre> <p> <strong>seed</strong> : It is an integer value that contains a seed for a new sequence of pseudo-random numbers.</p> <h3>Generate the random numbers using srand() function</h3> <p>Let's write a program to get the random numbers using srand() function in C.</p> <p> <strong>srandNum.c</strong> </p> <pre> #include #include #include // use time.h header file to use time int main() { int num, i; time_t t1; // declare time variable printf(' Enter a number to set the limit for a random number '); scanf (' %d', &num); /* define the random number generator */ srand ( (unsigned) time (&t1)); // pass the srand() parameter printf(' '); // print the space /* generate random number between 0 to 50 */ for (i = 0; i <num; i++) { printf( '%d ', rand() % 50); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit for a random number 10 44 32 23 35 6 33 1 4 22 18 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Enter a number to set the limit for a random number 15 13 30 24 27 4 30 28 35 36 13 44 39 21 5 7 </pre> <p>As we can see in the above Output, it returns different sequences of random numbers on every execution of the programming code.</p> <h3>Generate the random numbers using srand() and time() function</h3> <p>Let's write a program to get the random numbers using srand() with time() function.</p> <p> <strong>srand_time.c</strong> </p> <pre> #include #include int main() { int random = rand(); // assign the rand() function to random variable srand( time(0)); printf( ' Seed = %d', time(0)); printf( ' Random number = %d', random); return 0; } </pre> <p> <strong>Output</strong> </p> <pre> Seed = 1619450091 Random number = 41 </pre> <h3>Get a seeding value and print the random numbers using srand() function</h3> <p>Let's write a program to get the seed value and random numbers using srand() function.</p> <p> <strong>srand_time.c</strong> </p> <pre> #include #include int main() { int count; unsigned int seed; // use for randomize number printf(' Enter the Seeding value: '); scanf(' %u', &seed); srand (seed); // pass parameter // generate random number between 1 to 6 for (count = 1; count <= 1 5="=" 10; ++count) { printf(' %5d', + (rand () % 6)); if (count 0) print the number in next line puts(' '); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter the Seeding value: 10 6 4 3 3 6 3 3 1 3 4 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Enter the Seeding value: 20 2 4 2 4 5 4 3 5 1 4 </pre> <p> <strong>3rd execution of the program:</strong> </p> <pre> Enter the Seeding value: 25 1 6 1 6 4 4 1 4 1 3 </pre> <p>As we can see in the above Output, when we executed the same program again and again with different seeds values, it displays the different sequences of a random number from 1 to 6.</p> <h3>Generate the random number using the random function</h3> <p>Let's create a program to use stadlib header file to get the random number using random function in C.</p> <p> <strong>func.c</strong> </p> <pre> #include #include #include int main() { int i, num, max, temp; printf (' Enter a number to set the limit of random numbers '); scanf ('%d', num); printf (' Enter the maximum number from you want to get the random number: '); scanf ('%d', max); printf (' %d random number from 0 to %d number are: ', num, max); randomize(); for (i = 1; i <= num; i++) { temp="random(max)" * use random() function to get the random number printf (' %d ', temp); print } getch(); < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit of random numbers 17 Enter the maximum number from you want to get the random number: 100 15 random number from 0 to 100 number are: 42 68 35 1 70 25 79 59 63 28 75 89 90 43 7 4 65 </pre> <h2>Program to generate float random numbers</h2> <p>Let's consider a program to print the float random numbers in C.</p> <p> <strong>random1.c</strong> </p> <pre> #include #include #include int main() { srand( (unsigned int) time(NULL)); float f1 = 5.0; int i; printf(?Float random numbers are: ?); for (i = 0; i<10; i++) { printf('%f', ((float) rand() rand_max) * f1); printf(' '); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Float random numbers are: 1.208075 1.658376 4.645070 2.298807 3.117161 0.961486 4.115573 4.336223 2.894833 2.249825 </pre> <hr></10;></pre></=></pre></=></pre></num;></pre></=></pre></5;>
II wykonanie programu:
Random Numbers are: 41 18467 6334 26500 19169
Trzecia realizacja programu
Random Numbers are: 41 18467 6334 26500 19169
Jak widać na powyższym wyjściu, zwraca tę samą sekwencję liczb losowych przy każdym wykonaniu kodu programu.
Wygeneruj 10 liczb losowych od 1 do 100 za pomocą funkcji Rand().
Rozważmy program, który znajdzie liczbę losową w C za pomocą funkcji Rand().
Rand_num.c
#include #include #include int main() { // declare the local variables int i, num; printf (' Program to get the random number from 1 to 100 '); for (i = 1; i <= 100 10; i++) { num="rand()" % + 1; use rand() function to get the random number printf (\' %d \', num); getch(); } < pre> <p> <strong>Output</strong> </p> <pre> Program to get the random number from 1 to 100 42 68 35 1 70 25 79 59 63 65 </pre> <h2>srand() function</h2> <p>The srand() function is a C library function that determines the initial point to generate different series of pseudo-random numbers. A srand() function cannot be used without using a rand() function. The srand() function is required to set the value of the seed only once in a program to generate the different results of random integers before calling the rand() function.</p> <h3>Syntax</h3> <pre> int srand (unsigned int seed) </pre> <p> <strong>seed</strong> : It is an integer value that contains a seed for a new sequence of pseudo-random numbers.</p> <h3>Generate the random numbers using srand() function</h3> <p>Let's write a program to get the random numbers using srand() function in C.</p> <p> <strong>srandNum.c</strong> </p> <pre> #include #include #include // use time.h header file to use time int main() { int num, i; time_t t1; // declare time variable printf(' Enter a number to set the limit for a random number '); scanf (' %d', &num); /* define the random number generator */ srand ( (unsigned) time (&t1)); // pass the srand() parameter printf(' '); // print the space /* generate random number between 0 to 50 */ for (i = 0; i <num; i++) { printf( \'%d \', rand() % 50); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit for a random number 10 44 32 23 35 6 33 1 4 22 18 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Enter a number to set the limit for a random number 15 13 30 24 27 4 30 28 35 36 13 44 39 21 5 7 </pre> <p>As we can see in the above Output, it returns different sequences of random numbers on every execution of the programming code.</p> <h3>Generate the random numbers using srand() and time() function</h3> <p>Let's write a program to get the random numbers using srand() with time() function.</p> <p> <strong>srand_time.c</strong> </p> <pre> #include #include int main() { int random = rand(); // assign the rand() function to random variable srand( time(0)); printf( ' Seed = %d', time(0)); printf( ' Random number = %d', random); return 0; } </pre> <p> <strong>Output</strong> </p> <pre> Seed = 1619450091 Random number = 41 </pre> <h3>Get a seeding value and print the random numbers using srand() function</h3> <p>Let's write a program to get the seed value and random numbers using srand() function.</p> <p> <strong>srand_time.c</strong> </p> <pre> #include #include int main() { int count; unsigned int seed; // use for randomize number printf(' Enter the Seeding value: '); scanf(' %u', &seed); srand (seed); // pass parameter // generate random number between 1 to 6 for (count = 1; count <= 1 5="=" 10; ++count) { printf(\' %5d\', + (rand () % 6)); if (count 0) print the number in next line puts(\' \'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter the Seeding value: 10 6 4 3 3 6 3 3 1 3 4 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Enter the Seeding value: 20 2 4 2 4 5 4 3 5 1 4 </pre> <p> <strong>3rd execution of the program:</strong> </p> <pre> Enter the Seeding value: 25 1 6 1 6 4 4 1 4 1 3 </pre> <p>As we can see in the above Output, when we executed the same program again and again with different seeds values, it displays the different sequences of a random number from 1 to 6.</p> <h3>Generate the random number using the random function</h3> <p>Let's create a program to use stadlib header file to get the random number using random function in C.</p> <p> <strong>func.c</strong> </p> <pre> #include #include #include int main() { int i, num, max, temp; printf (' Enter a number to set the limit of random numbers '); scanf ('%d', num); printf (' Enter the maximum number from you want to get the random number: '); scanf ('%d', max); printf (' %d random number from 0 to %d number are: ', num, max); randomize(); for (i = 1; i <= num; i++) { temp="random(max)" * use random() function to get the random number printf (\' %d \', temp); print } getch(); < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit of random numbers 17 Enter the maximum number from you want to get the random number: 100 15 random number from 0 to 100 number are: 42 68 35 1 70 25 79 59 63 28 75 89 90 43 7 4 65 </pre> <h2>Program to generate float random numbers</h2> <p>Let's consider a program to print the float random numbers in C.</p> <p> <strong>random1.c</strong> </p> <pre> #include #include #include int main() { srand( (unsigned int) time(NULL)); float f1 = 5.0; int i; printf(?Float random numbers are: ?); for (i = 0; i<10; i++) { printf(\'%f\', ((float) rand() rand_max) * f1); printf(\' \'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Float random numbers are: 1.208075 1.658376 4.645070 2.298807 3.117161 0.961486 4.115573 4.336223 2.894833 2.249825 </pre> <hr></10;></pre></=></pre></=></pre></num;></pre></=>
funkcja śrand().
Funkcja srand() jest funkcją z biblioteki C, która określa punkt początkowy w celu wygenerowania różnych serii liczb pseudolosowych. Nie można używać funkcji srand() bez użycia funkcji rand(). Funkcja srand() jest wymagana do ustawienia wartości początkowej tylko raz w programie w celu wygenerowania różnych wyników losowych liczb całkowitych przed wywołaniem funkcji Rand().
Składnia
int srand (unsigned int seed)
nasionko : Jest to wartość całkowita zawierająca zarodek nowej sekwencji liczb pseudolosowych.
Wygeneruj liczby losowe za pomocą funkcji srand().
Napiszmy program pobierający liczby losowe za pomocą funkcji srand() w C.
zwracanie tablicy Java
srandNum.c
#include #include #include // use time.h header file to use time int main() { int num, i; time_t t1; // declare time variable printf(' Enter a number to set the limit for a random number '); scanf (' %d', &num); /* define the random number generator */ srand ( (unsigned) time (&t1)); // pass the srand() parameter printf(' '); // print the space /* generate random number between 0 to 50 */ for (i = 0; i <num; i++) { printf( \'%d \', rand() % 50); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit for a random number 10 44 32 23 35 6 33 1 4 22 18 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Enter a number to set the limit for a random number 15 13 30 24 27 4 30 28 35 36 13 44 39 21 5 7 </pre> <p>As we can see in the above Output, it returns different sequences of random numbers on every execution of the programming code.</p> <h3>Generate the random numbers using srand() and time() function</h3> <p>Let's write a program to get the random numbers using srand() with time() function.</p> <p> <strong>srand_time.c</strong> </p> <pre> #include #include int main() { int random = rand(); // assign the rand() function to random variable srand( time(0)); printf( ' Seed = %d', time(0)); printf( ' Random number = %d', random); return 0; } </pre> <p> <strong>Output</strong> </p> <pre> Seed = 1619450091 Random number = 41 </pre> <h3>Get a seeding value and print the random numbers using srand() function</h3> <p>Let's write a program to get the seed value and random numbers using srand() function.</p> <p> <strong>srand_time.c</strong> </p> <pre> #include #include int main() { int count; unsigned int seed; // use for randomize number printf(' Enter the Seeding value: '); scanf(' %u', &seed); srand (seed); // pass parameter // generate random number between 1 to 6 for (count = 1; count <= 1 5="=" 10; ++count) { printf(\' %5d\', + (rand () % 6)); if (count 0) print the number in next line puts(\' \'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter the Seeding value: 10 6 4 3 3 6 3 3 1 3 4 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Enter the Seeding value: 20 2 4 2 4 5 4 3 5 1 4 </pre> <p> <strong>3rd execution of the program:</strong> </p> <pre> Enter the Seeding value: 25 1 6 1 6 4 4 1 4 1 3 </pre> <p>As we can see in the above Output, when we executed the same program again and again with different seeds values, it displays the different sequences of a random number from 1 to 6.</p> <h3>Generate the random number using the random function</h3> <p>Let's create a program to use stadlib header file to get the random number using random function in C.</p> <p> <strong>func.c</strong> </p> <pre> #include #include #include int main() { int i, num, max, temp; printf (' Enter a number to set the limit of random numbers '); scanf ('%d', num); printf (' Enter the maximum number from you want to get the random number: '); scanf ('%d', max); printf (' %d random number from 0 to %d number are: ', num, max); randomize(); for (i = 1; i <= num; i++) { temp="random(max)" * use random() function to get the random number printf (\' %d \', temp); print } getch(); < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit of random numbers 17 Enter the maximum number from you want to get the random number: 100 15 random number from 0 to 100 number are: 42 68 35 1 70 25 79 59 63 28 75 89 90 43 7 4 65 </pre> <h2>Program to generate float random numbers</h2> <p>Let's consider a program to print the float random numbers in C.</p> <p> <strong>random1.c</strong> </p> <pre> #include #include #include int main() { srand( (unsigned int) time(NULL)); float f1 = 5.0; int i; printf(?Float random numbers are: ?); for (i = 0; i<10; i++) { printf(\'%f\', ((float) rand() rand_max) * f1); printf(\' \'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Float random numbers are: 1.208075 1.658376 4.645070 2.298807 3.117161 0.961486 4.115573 4.336223 2.894833 2.249825 </pre> <hr></10;></pre></=></pre></=></pre></num;>
II wykonanie programu:
Enter a number to set the limit for a random number 15 13 30 24 27 4 30 28 35 36 13 44 39 21 5 7
Jak widać na powyższym wyjściu, przy każdym wykonaniu kodu programu zwracane są różne sekwencje liczb losowych.
Wygeneruj liczby losowe za pomocą funkcji srand() i time().
Napiszmy program pobierający liczby losowe za pomocą funkcji srand() z funkcją time().
srand_time.c
#include #include int main() { int random = rand(); // assign the rand() function to random variable srand( time(0)); printf( ' Seed = %d', time(0)); printf( ' Random number = %d', random); return 0; }
Wyjście
zmodyfikuj plik linux
Seed = 1619450091 Random number = 41
Uzyskaj wartość początkową i wydrukuj liczby losowe za pomocą funkcji srand().
Napiszmy program, który pobierze wartość początkową i liczby losowe za pomocą funkcji srand().
srand_time.c
#include #include int main() { int count; unsigned int seed; // use for randomize number printf(' Enter the Seeding value: '); scanf(' %u', &seed); srand (seed); // pass parameter // generate random number between 1 to 6 for (count = 1; count <= 1 5="=" 10; ++count) { printf(\' %5d\', + (rand () % 6)); if (count 0) print the number in next line puts(\' \'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter the Seeding value: 10 6 4 3 3 6 3 3 1 3 4 </pre> <p> <strong>2nd execution of the program:</strong> </p> <pre> Enter the Seeding value: 20 2 4 2 4 5 4 3 5 1 4 </pre> <p> <strong>3rd execution of the program:</strong> </p> <pre> Enter the Seeding value: 25 1 6 1 6 4 4 1 4 1 3 </pre> <p>As we can see in the above Output, when we executed the same program again and again with different seeds values, it displays the different sequences of a random number from 1 to 6.</p> <h3>Generate the random number using the random function</h3> <p>Let's create a program to use stadlib header file to get the random number using random function in C.</p> <p> <strong>func.c</strong> </p> <pre> #include #include #include int main() { int i, num, max, temp; printf (' Enter a number to set the limit of random numbers '); scanf ('%d', num); printf (' Enter the maximum number from you want to get the random number: '); scanf ('%d', max); printf (' %d random number from 0 to %d number are: ', num, max); randomize(); for (i = 1; i <= num; i++) { temp="random(max)" * use random() function to get the random number printf (\' %d \', temp); print } getch(); < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit of random numbers 17 Enter the maximum number from you want to get the random number: 100 15 random number from 0 to 100 number are: 42 68 35 1 70 25 79 59 63 28 75 89 90 43 7 4 65 </pre> <h2>Program to generate float random numbers</h2> <p>Let's consider a program to print the float random numbers in C.</p> <p> <strong>random1.c</strong> </p> <pre> #include #include #include int main() { srand( (unsigned int) time(NULL)); float f1 = 5.0; int i; printf(?Float random numbers are: ?); for (i = 0; i<10; i++) { printf(\'%f\', ((float) rand() rand_max) * f1); printf(\' \'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Float random numbers are: 1.208075 1.658376 4.645070 2.298807 3.117161 0.961486 4.115573 4.336223 2.894833 2.249825 </pre> <hr></10;></pre></=></pre></=>
II wykonanie programu:
Enter the Seeding value: 20 2 4 2 4 5 4 3 5 1 4
Trzecia realizacja programu:
Enter the Seeding value: 25 1 6 1 6 4 4 1 4 1 3
Jak widać na powyższym wyjściu, gdy wielokrotnie wykonywaliśmy ten sam program z różnymi wartościami początkowymi, wyświetlał on różne sekwencje liczb losowych od 1 do 6.
Wygeneruj liczbę losową za pomocą funkcji losowej
Stwórzmy program, który użyje pliku nagłówkowego stadlib do uzyskania liczby losowej za pomocą funkcji losowej w C.
funkcja.c
#include #include #include int main() { int i, num, max, temp; printf (' Enter a number to set the limit of random numbers '); scanf ('%d', num); printf (' Enter the maximum number from you want to get the random number: '); scanf ('%d', max); printf (' %d random number from 0 to %d number are: ', num, max); randomize(); for (i = 1; i <= num; i++) { temp="random(max)" * use random() function to get the random number printf (\' %d \', temp); print } getch(); < pre> <p> <strong>Output</strong> </p> <pre> Enter a number to set the limit of random numbers 17 Enter the maximum number from you want to get the random number: 100 15 random number from 0 to 100 number are: 42 68 35 1 70 25 79 59 63 28 75 89 90 43 7 4 65 </pre> <h2>Program to generate float random numbers</h2> <p>Let's consider a program to print the float random numbers in C.</p> <p> <strong>random1.c</strong> </p> <pre> #include #include #include int main() { srand( (unsigned int) time(NULL)); float f1 = 5.0; int i; printf(?Float random numbers are: ?); for (i = 0; i<10; i++) { printf(\'%f\', ((float) rand() rand_max) * f1); printf(\' \'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Float random numbers are: 1.208075 1.658376 4.645070 2.298807 3.117161 0.961486 4.115573 4.336223 2.894833 2.249825 </pre> <hr></10;></pre></=>
Program do generowania losowych liczb zmiennoprzecinkowych
Rozważmy program wyświetlający liczby losowe typu zmiennoprzecinkowego w języku C.
losowy1.c
#include #include #include int main() { srand( (unsigned int) time(NULL)); float f1 = 5.0; int i; printf(?Float random numbers are: ?); for (i = 0; i<10; i++) { printf(\\'%f\\', ((float) rand() rand_max) * f1); printf(\\' \\'); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Float random numbers are: 1.208075 1.658376 4.645070 2.298807 3.117161 0.961486 4.115573 4.336223 2.894833 2.249825 </pre> <hr></10;>
10;>=>=>=>5;>