функција ранд () на језику Ц

Rand Function C Language



У језику Ц, ред () функција се користи за Генератор псеудо броја (ПРНГ) . Случајни бројеви које генерише функција ранд () нису заиста случајни. То је низ који се периодично понавља, али је период толико велики да га можемо занемарити. Тхе ред () функција ради тако што памти почетну вредност која се користи за израчунавање следећег случајног броја и следећег новог семена. У овом чланку ћемо детаљно разговарати о томе како се случајни бројеви могу генерисати помоћу ред () функција. Дакле, почнимо!

Заглавље датотека:

стдлиб.х







Синтакса:

инт ранд (воид)



Повратне вредности:

Ова функција враћа следећи псеудо-случајни број у низу. Вредност опсега низа бројева је између 0 и РАНД_МАКС. РАНД_МАКС је макро дефинисан у стдлиб.х хеадер датотеку, чија је вредност највећа вредност, која се може вратити помоћу функције ранд (). Вредност РАНД_МАКС је већа, али не мања од 32767 у зависности од Ц библиотека.



//Екампле1.ц

#инцлуде
#инцлуде

интглавни()
{

инти;

принтф ('10 Случајни бројеви => н');

за(и=0;и<10;и++)
{
принтф ('%д', ред ());
}

принтф (' н');
повратак 0;
}


У Примеру 1.ц, позивамо функцију ранд () у свакој итерацији фор петље и исписујемо повратну вредност функције. Редослед вредности функције ранд () је исти сваки пут када покренемо програм. Подразумевано је семе функције ранд постављено на 1.





Можемо поставити семе за функцију ранд помоћу сранд () функција. Семе се може поставити само једном, а пре првог пута ред () позив функције.

функција сранд ():

Заглавље датотека:

стдлиб.х



Синтакса:

инт сранд (непотписано инт семе)

Аргументи:

Ова функција узима 1 аргумент

семе: Целобројна вредност која се користи као семе за нову серију псеудо-случајних бројева.

Повратне вредности:

Ниједан

//Екампле2.ц

#инцлуде
#инцлуде
#инцлуде

интглавни()
{

инти;

сранд ( време (0));

принтф ('10 Случајни бројеви => н');

за(и=0;и<10;и++)
{
принтф ('%д', ред ());
}

принтф (' н');
повратак 0;
}


У Примеру 2.ц, користили смо функцију сранд () за постављање почетног семена низа случајних бројева генерисаних функцијом ранд (). Сваки пут када се програм покрене, генерише се другачији низ. У сранд (), функција тиме (0) (декларисана у време.х хеадер филе) се користи као семе. Ова функција (0) враћа број секунди протеклих од епохе (00:00:00, 1. јануара 1970). Ово и даље може произвести исте секвенце ако програм покренете у истој секунди.

//Екампле3.ц

#инцлуде
#инцлуде
#инцлуде

интглавни()
{

инти;

сранд ( време (0));

принтф ('10 Случајни бројеви између 1 и 10 => н');

за(и=0;и<10;и++)
{
принтф ('%д',( ред () %10) + 1);
}

принтф (' н');
повратак 0;
}


У примеру3.ц видели смо како се случајни бројеви могу генерисати између 1 и 10.

//Екампле4.ц

#инцлуде
#инцлуде
#инцлуде

интглавни()
{

инти,мак,мин;

принтф ('Унесите минималну вредност =>');
сцанф ('%д', &мин);
принтф ('Унесите максималну вредност =>');
сцанф ('%д', &мак);

ако(мин>мак)
{
принтф („Минимална вредност је већа од максималне вредности н');
повратак 0;
}

сранд ( време (0));


принтф ('10 Случајни бројеви између %д и %д => н',мин,мак);

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

принтф (' н');
повратак 0;
}


У Примеру 4.ц узели смо опсег од корисника и генерисали насумични број унутар овог опсега. Формула је следећа: ранд ()% (мак - мин +1)) + мин

//Екампле5.ц

#инцлуде
#инцлуде
#инцлуде

интглавни()
{

инти;

сранд ( време (0));

принтф ('10 Случајни бројеви између 0.0 и 1.0 => н');

за(и=0;и<10;и++)
{
принтф ('%ф',((пловак) ред () /РАНД_МАКС));
}

принтф (' н');
повратак 0;
}


У Примеру 5.ц видели смо како можемо генерисати случајне бројеве између флоат 0.0 и 1.0 Формула је: (флоат) ранд () /РАНД_МАКС)

//Екампле6.ц

#инцлуде
#инцлуде
#инцлуде

интглавни()
{

инти;
пловакмак,мин;

принтф ('Унесите минималну вредност =>');
сцанф ('%ф', &мин);
принтф ('Унесите максималну вредност =>');
сцанф ('%ф', &мак);

ако(мин>мак)
{
принтф („Минимална вредност је већа од максималне вредности н');
повратак 0;
}

сранд ( време (0));

принтф ('10 Случајни бројеви између %ф и %ф => н',мин,мак);

за(и=0;и<10;и++)
{
принтф ('%ф',мин+ ((пловак) ред () /(РАНД_МАКС/(мак-мин))));
}

принтф (' н');
повратак 0;
}


У Примеру 6.ц, узели смо опсег од корисника и генерисали насумични број унутар овог опсега (оба укључиво). Формула је следећа: мин + ((флоат) ранд () /(РАНД_МАКС /(мак - мин)))

Закључак:

У овом чланку смо сазнали како се случајни бројеви могу генерисати помоћу ред () и сранд () функција. Не постоје гаранције за квалитет насумичних бројева које генерише ранд функција, али је довољно добар за повремену употребу.