random number generator c
Овај водич детаљно описује употребу функција ранд () и сранд () детаљно за генерисање случајних бројева у Ц ++:
Много пута захтевамо употребу случајних бројева у нашој апликацији за израду симулација или игара и других апликација које захтевају случајне догађаје.
На пример, у игри коцкица, без случајних догађаја, искочиће иста страна сваки пут када бацимо коцку, дајући нежељене резултате.
Стога постаје неопходно да на располагању имамо генератор случајних бројева. У физичком окружењу можемо генерисати случајне догађаје, али то није могуће када су у питању рачунари.
=> Прочитајте серију Еаси Ц ++ Траининг Сериес.
То је зато што је све у рачунарима бинарно, тј. 0 или 1 (тачно или нетачно) и ништа између. Тако рачунари обично генеришу предвидљиве догађаје и нису у могућности да генеришу случајне догађаје.
Уместо тога, рачунари симулирају насумичност која се ради помоћу генератор псеудо-случајних бројева (ПРНГ) . Ц ++ има генератор случајних бројева и може се користити са многим апликацијама.
У овом упутству детаљно ћемо размотрити функције / приступе за генерисање случајних бројева у Ц ++.
Шта ћете научити:
- Генератор псеудо-случајних бројева (ПРНГ) у језику Ц ++
- функције ранд и сранд У Ц ++
- Разлика између ранд () и сранд ()
- Ц ++ Рандом Флоат
- Случајни број Ц ++ између 0 и 1
- Случајни број Ц ++ између 1 и 10
- Често постављана питања
- Закључак
- Препоручено читање
Генератор псеудо-случајних бројева (ПРНГ) у језику Ц ++
Генерално, генератор псеудо-случајних бројева (ПРНГ) може се дефинисати као програм који узима семе или почетни број и трансформише га у неки други број који се разликује од семена помоћу математичких операција.
Овај поступак се изводи више пута узимајући сваки пут последњи генерисани број. Сваки пут када је генерисани број неповезан са претходним бројевима. Стога је овај програм у стању да генерише низ бројева који се чине случајним.
Језик Ц ++ долази са уграђеним генератором псеудо-случајних бројева и пружа две функције ранд () и сранд () које се могу користити за генерисање случајних бројева.
Размотримо ове две функције детаљно.
која је разлика између споја споља и споја лево
функције ранд и сранд У Ц ++
сранд ()
Прототип функције: воид сранд (непотписано инт семе);
Параметри: семе - целобројна вредност која се користи као семе алгоритмом генератора псеудо-случајних бројева.
Повратна вредност: Ниједан
Опис: сранд функција се користи за иницијализацију низа псеудо-случајних бројева параметром названим „случајно семе“. Излаз функције ранда чини случајним. У супротном, излаз функције ранд () биће исти сваки пут када је позовемо.
Дакле, ако засадимо генератор случајних бројева сранд () функцијом, он ће покренути генератор од тачке која зависи од вредности аргумента прослеђеног сранд. Ако генератор случајних бројева поставимо са системским временом На пример, пре првог позива функције ранд (), тада ће генерисати случајне бројеве сваки пут када покренемо програм.
Имајте на уму да функцију сранд () обично морамо да позовемо само једном пре позива на функцију ранд (), а не сваки пут када генеришемо случајне бројеве.
ранд ()
Прототип функције: инт ранд (воид);
Параметри: ниједан
Повратна вредност: Целобројна вредност између 0 и РАНД_МАКС.
Опис: Функција ранд () генерише следећи случајни број у низу. Генерирани број је псеудо-случајни цели број између 0 и РАНД_МАКС. РАНД_МАКС је константа у заглављу која је обично постављена на вредност 32767.
#include #include #include int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count <= 100; ++count) { std::cout << std::rand() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Излаз:
У горе наведеном програму генерисали смо првих 100 случајних бројева давањем системског сата као почетног елемента функције сранд. У овом програму користили смо и сранд и ранд функције. Имајте на уму да ће због системског сата као почетног, генерирани излаз бити другачији сваки пут када извршимо програм.
Разлика између ранд () и сранд ()
ред () | сранд () |
---|---|
Користи се за генерисање случајних бројева. | Поседа ПРНГ који користи функција ранд (). |
Позван онолико пута колико желимо да генеришемо случајне бројеве. | Позван само једном да види генератор случајних бројева. |
Не узима никакве аргументе. | Узима параметар који се користи за постављање генератора случајних бројева. |
Враћа секвенцу случајних бројева сваки пут када је позван. | Не враћа вредност. |
Ц ++ Рандом Флоат
Функција ранд () коју смо горе видели по дефаулту враћа целу вредност која у одређеним случајевима може проузроковати преливање. Дакле, можемо користити флоат или двоструку вредност. Можемо да генеришемо плутајуће случајне бројеве преливањем враћене вредности функције ранд () на „флоат“.
Тако ће следеће генерисати случајни број између флоат 0,0 и 1,0 (укључујући оба).
cout< Слично томе, доњи ред ће генерисати случајан број између 1,2 и 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
У следећем примеру испод користимо случајни флоат за генерисање резултата.
Случајни број Ц ++ између 0 и 1
Можемо користити функцију сранд () и ранд () да генеришемо случајне бројеве између 0 и 1. Имајте на уму да морамо да преусмеримо излаз функције ранд () на децималну вредност или флоат или доубле.
Подразумевана повратна вредност функције ранд (), тј. Цео број је неадекватан за приказ случајних бројева између 0 и 1 који су разломци.
Ц ++ програм дат у наставку приказује првих пет случајних бројева између 0 и 1.
како започети нови пројекат у помрачењу
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Оутпут :

Видимо да је резултат програма случајни број између 0 и 1 који су разломци.
Ако не вратимо повратну вредност функције ранд () у плутајућу или двоструку вредност, тада ћемо добити 0 као случајни број.
Случајни број Ц ++ између 1 и 10
Следећи пример је генерисање случајних бројева између 1 и 10. Следи програм Ц ++ који генерише случајне бројеве.
Функцију сранд позивамо са системским сатом, а затим функцију ранд са операторима модула 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Излаз:

У горњем програму генеришемо првих 10 случајних бројева између 1 и 10. Имајте на уму да ће сваки пут када се програм покрене генерисати различите скупове бројева због функције сранд која се позива.
Често постављана питања
П # 1) Шта је датотека заглавља за случајну функцију у Ц ++?
Одговор: Функције за генерисање случајних бројева, ранд и сранд су дефинисане у< цстдлиб > заглавље Ц ++.
П # 2) Шта је Ранд_мак у Ц ++?
Одговор: РАНД_МАКС је константа у заглављу која је обично постављена на вредност 32767. Генератор псеудо-случајних бројева (ПРНГ) генерише случајне бројеве између 0 и РАНД_МАКС.
П # 3) Како функционише случајна функција?
Одговор: Ц ++ подржава две случајне функције, тј. сранд () и ранд (). Функција сранд () поставља генератор случајних бројева који користи функција ранд () који генерише секвенцу случајних бројева у зависности од иницијалног датог семена.
П # 4) Како се бараташ временом?
Одговор: Функција сранд поставља генератор псеудо-случајних бројева (ПРНГ) који користи функција ранд (). Стандардна пракса је да се резултат позива на време (0) користи као почетно средство. Ова функција времена враћа вредност, број секунди од 00:00 сати, 1. јануара 1970, УТЦ (тренутна временска ознака УНИКС).
Тако се вредност семена мења сваке секунде. Стога се сваки пут када се сранд позове с функцијом времена генерише нови скуп случајних бројева.
Закључак
У овом упутству детаљно смо разговарали о стварању случајних бројева. Програмски језици или уопште рачунари не генеришу случајне бројеве јер су дизајнирани да дају предиктивне резултате. Стога морамо симулирати случајност.
Да бисмо симулирали случајност, користимо генератор псеудо-случајних бројева (ПРНГ) који је уграђен у Ц ++. Тако користећи две функције, ранд () и сранд (), можемо генерисати случајне бројеве у Ц ++.
Функција сранд () користи се за обезбеђивање семена за генерисање случајних бројева, док функција ранд () генерише следећи случајни број у низу.
=> Овде потражите целу серију обука за Ц ++.
Препоручено читање
- Случајни број Ц # и генератор случајних низова Ц # са примерима кода
- Водич за главне функције Питхона са практичним примерима
- Водич за Уник цеви: Цеви у програмирању за Уник
- Рекурзија у Ц ++
- Функције пријатеља у Ц ++
- Полиморфизам у Ц ++
- Објектно оријентисано програмирање на језику Ц ++
- ООП Јава: Увод у објектно оријентисано програмирање на Јави