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

Rand Function C Language



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

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

stdlib.h







Синтаксис:

int rand (невалидно)



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

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



// Пример1.c

#включва
#включва

intглавен()
{

inti;

printf ('10 Случайни числа =>н');

за(i=0;i<10;i++)
{
printf ('%д ', ред ());
}

printf ('н');
връщане 0;
}


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





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

функция srand ():

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

stdlib.h



Синтаксис:

int srand (без подпис int seed)

Аргументи:

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

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

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

Нито един

// Пример2.в

#включва
#включва
#включва

intглавен()
{

inti;

srand ( време (0));

printf ('10 Случайни числа =>н');

за(i=0;i<10;i++)
{
printf ('%д ', ред ());
}

printf ('н');
връщане 0;
}


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

// Пример3.в

#включва
#включва
#включва

intглавен()
{

inti;

srand ( време (0));

printf ('10 Случайни числа между 1 и 10 =>н');

за(i=0;i<10;i++)
{
printf ('%д ',( ред () %10) + 1);
}

printf ('н');
връщане 0;
}


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

// Пример4.c

#включва
#включва
#включва

intглавен()
{

inti,макс,мин;

printf ('Въведете минимална стойност =>');
scanf ('%д', &мин);
printf ('Въведете максимална стойност =>');
scanf ('%д', &макс);

ако(мин>макс)
{
printf („Минималната стойност е по -голяма от максималната стойностн');
връщане 0;
}

srand ( време (0));


printf ('10 Случайни числа между %d и %d =>н',мин,макс);

за(i=0;i<10;i++)
{
printf ('%д ',( ред () % (макс-мин+1)) +мин);
}

printf ('н');
връщане 0;
}


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

// Пример5.c

#включва
#включва
#включва

intглавен()
{

inti;

srand ( време (0));

printf ('10 Случайни числа между 0.0 и 1.0 =>н');

за(i=0;i<10;i++)
{
printf („%f“,((плувам) ред () /RAND_MAX));
}

printf ('н');
връщане 0;
}


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

// Пример 6.c

#включва
#включва
#включва

intглавен()
{

inti;
плуваммакс,мин;

printf ('Въведете минимална стойност =>');
scanf („%f“, &мин);
printf ('Въведете максимална стойност =>');
scanf („%f“, &макс);

ако(мин>макс)
{
printf („Минималната стойност е по -голяма от максималната стойностн');
връщане 0;
}

srand ( време (0));

printf ('10 Случайни числа между %f и %f =>н',мин,макс);

за(i=0;i<10;i++)
{
printf („%f“,мин+ ((плувам) ред () /(RAND_MAX/(макс-мин))));
}

printf ('н');
връщане 0;
}


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

Заключение:

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