C Програмиране

rand () Функция на C език

rand () Функция на C език
На езика C, rand () функцията се използва за Генератор на псевдо числа (PRNG). Случайните числа, генерирани от функцията rand (), не са наистина случайни. Това е последователност, която се повтаря периодично, но периодът е толкова голям, че можем да го игнорираме. The rand () функцията работи, като запомня начална стойност, която се използва за изчисляване на следващото произволно число и следващото ново семе. В тази статия ще обсъдим подробно как случайни числа могат да бъдат генерирани с помощта на rand () функция. И така, нека започнем!

Заглавен файл:

stdlib.з

Синтаксис:

int rand (void)

Върнати стойности:

Тази функция връща следващото псевдослучайно число от поредицата. Стойността на диапазона на числовата поредица е между 0 и RAND_MAX. RAND_MAX е макрос, дефиниран в stdlib.з заглавен файл, чиято стойност е максималната стойност, която може да се върне чрез функция rand (). Стойността на RAND_MAX е по-голяма, но не по-малка от 32767 в зависимост от C библиотеките.

// Пример1.° С
#include
#include
int main ()

int i;
printf ("10 произволни числа => \ n");
за (i = 0; i<10;i++)

printf ("% d", rand ());

printf ("\ n");
връщане 0;


В Пример1.c, извикваме функцията rand () във всяка итерация на цикъл for и отпечатваме връщаната стойност на функцията. Последователността на стойностите на функцията rand () е една и съща всеки път, когато стартираме програмата. По подразбиране семето на функцията rand е настроено на 1.

Можем да зададем семето за функцията rand с помощта на srand () функция. Семената могат да бъдат настроени само веднъж и преди първия път rand () извикване на функция.

srand () функция:

Заглавен файл:

stdlib.з

Синтаксис:

int srand (неподписано int seed)

Аргументи:

Тази функция отнема 1 аргумент

семе: Целочислена стойност, използвана като семе за нова поредица от псевдослучайни числа.

Върнати стойности:

Нито един

// Пример2.° С
#include
#include
#include
int main ()

int i;
srand (време (0));
printf ("10 произволни числа => \ n");
за (i = 0; i<10;i++)

printf ("% d", rand ());

printf ("\ n");
връщане 0;


В Пример2.c, използвахме функцията srand (), за да зададем първоначалното начало на последователността на произволни числа, генерирана от функцията rand (). Всеки път, когато програмата се изпълнява, се генерира различна последователност. В srand (), функция time (0) (декларирана в време.з header file) се използва като семе. Функцията this time (0) връща броя секунди, изминали от епохата (00:00:00, 1 януари 1970 г.). Това все още може да създаде същите последователности, ако стартирате програмата в една и съща секунда.

// Пример3.° С
#include
#include
#include
int main ()

int i;
srand (време (0));
printf ("10 произволни числа между 1 и 10 => \ n");
за (i = 0; i<10;i++)

printf ("% d", (rand ()% 10) + 1);

printf ("\ n");
връщане 0;


В Пример3.c видяхме как случайни числа могат да се генерират между 1 и 10.

// Пример4.° С
#include
#include
#include
int main ()

int i, max, min;
printf ("Въведете минимална стойност =>");
scanf ("% d", & min);
printf ("Въведете максимална стойност =>");
scanf ("% d", & max);
ако (min> max)

printf ("Минималната стойност е по-голяма от максималната стойност \ n");
връщане 0;

srand (време (0));
printf ("10 произволни числа между% d и% d => \ n", мин., макс.);
за (i = 0; i<10;i++)

printf ("% d", (rand ()% (max - min +1)) + min);

printf ("\ n");
връщане 0;


В Пример4.c взехме диапазона от потребителя и генерирахме произволно число в рамките на този диапазон. Формулата е: rand ()% (макс. - мин. +1)) + мин

// Пример5.° С
#include
#include
#include
int main ()

int i;
srand (време (0));
printf ("10 произволни числа между 0.0 и 1.0 => \ n ");
за (i = 0; i<10;i++)

printf ("% f", ((float) rand () / RAND_MAX));

printf ("\ n");
връщане 0;


В Пример5.c, видяхме как можем да генерираме случайни числа между float 0.0 и 1.0 Формулата е: (плаващ) rand () / RAND_MAX)

// Пример6.° С
#include
#include
#include
int main ()

int i;
float max, min;
printf ("Въведете минимална стойност =>");
scanf ("% f", & min);
printf ("Въведете максимална стойност =>");
scanf ("% f", & max);
ако (min> max)

printf ("Минималната стойност е по-голяма от максималната стойност \ n");
връщане 0;

srand (време (0));
printf ("10 произволни числа между% f и% f => \ n", мин., макс.);
за (i = 0; i<10;i++)

printf ("% f", min + ((float) rand () / (RAND_MAX / (max - min))));

printf ("\ n");
връщане 0;


В Пример6.в, взехме диапазона от потребителя и генерирахме произволно число в рамките на този диапазон (и двете включително). Формулата е: min + ((float) rand () / (RAND_MAX / (max - min)))

Заключение:

В тази статия научихме как случайни числа могат да се генерират с помощта на rand () и srand () функция. Няма гаранции за качеството на случайните числа, генерирани от функцията rand, но е достатъчно добра за случайна употреба.

Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...
0 А.д. Урок
От многото стратегически игри, 0 A.д. успява да се открои като изчерпателно заглавие и много дълбока, тактическа игра, въпреки че е с отворен код. Раз...
Урок за Unity3D
Въведение в Unity 3D Unity 3D е мощен двигател за разработка на игри. Това е кръстосана платформа, която ви позволява да създавате игри за мобилни уст...