random number generator c
Този урок описва подробно използването на функциите rand () и srand () в детайли за генериране на случайни числа в C ++:
Много пъти се налага използването на случайни числа в нашето приложение за създаване на симулации или игри и други приложения, които изискват случайни събития.
Например, в игра на зарове, без да има случайни събития, ще имаме една и съща страна, която изскача всеки път, когато хвърляме заровете, като по този начин даваме нежелани резултати.
Поради това става необходимо да разполагаме с генератор на случайни числа. Във физическата среда можем да генерираме случайни събития, но това не е възможно, когато става въпрос за компютри.
=> Прочетете серията Easy C ++ Training.
Това е така, защото всичко в компютрите е двоично, т.е. 0 или 1 (вярно или невярно) и нищо между тях. Така че компютрите обикновено генерират предсказуеми събития и не са в състояние да генерират случайни събития.
Вместо това компютрите симулират произволност, която се прави с помощта генератор на псевдослучайни числа (PRNG) . C ++ има генератор на случайни числа и може да се използва с много от приложенията.
В този урок ще обсъдим подробно функциите / подходите за генериране на случайни числа в C ++.
Какво ще научите:
- Генератор на псевдослучайни числа (PRNG) в C ++
- rand и srand функции в C ++
- Разлика между rand () и srand ()
- C ++ Random Float
- Случайно число C ++ между 0 и 1
- Случайно число C ++ между 1 и 10
- често задавани въпроси
- Заключение
- Препоръчително четене
Генератор на псевдослучайни числа (PRNG) в C ++
По принцип генераторът на псевдослучайни числа (PRNG) може да бъде дефиниран като програма, която приема семе или начално число и го преобразува в някакво друго число, различно от семето, използвайки математически операции.
Този процес се извършва многократно, като всеки път се взема последното генерирано число. Всеки път генерираният номер не е свързан с предишните числа. По този начин тази програма е в състояние да генерира поредица от числа, които изглеждат случайни.
Езикът C ++ се предлага с вграден генератор на псевдослучайни числа и осигурява две функции rand () и srand (), които могат да се използват за генериране на случайни числа.
Нека обсъдим подробно тези две функции.
qa въпроси и отговори за интервю за анализатор
rand и srand функции в C ++
srand ()
Прототип на функция: void srand (неподписан int seed);
Параметри: seed - целочислена стойност, която се използва като семена от алгоритъма на генератора на псевдослучайни числа.
Върната стойност: Нито един
Описание: srand функцията се използва за инициализиране на поредицата от псевдослучайни числа с параметър, наречен „произволно семе“. Това прави изхода на функцията rand да изглежда произволно. В противен случай изходът на функцията rand () ще бъде еднакъв всеки път, когато я извикаме.
По този начин, ако поставим генератора на случайни числа с функцията srand (), той ще стартира генератора от точката, която зависи от стойността на аргумента, предадена на srand. Ако зададем генератора на случайни числа със системното време Например, преди първото извикване на функцията rand (), тогава тя ще генерира произволни числа всеки път, когато стартираме програмата.
Имайте предвид, че обикновено трябва да извикаме функцията srand () само веднъж преди функцията за повикване към rand (), а не всеки път, когато генерираме произволни числа.
rand ()
Прототип на функция: int rand (void);
Параметри: нито един
Върната стойност: Целочислена стойност между 0 и RAND_MAX.
Описание: Функцията rand () генерира следващото произволно число в последователността. Генерираното число е псевдослучайно цяло число между 0 и RAND_MAX. RAND_MAX е константа в заглавката, която обикновено е зададена на стойност 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 случайни числа, като дадохме системния часовник като начален елемент за srand функция. В тази програма използвахме както srand, така и rand функции. Имайте предвид, че поради системния часовник като начален изход, генерираният изход ще бъде различен всеки път, когато изпълним програмата.
Разлика между rand () и srand ()
ред () | srand () |
---|---|
Използва се за генериране на случайни числа. | Посява PRNG, използван от функцията rand (). |
Извиква се толкова пъти, колкото искаме да генерираме произволни числа. | Обажда се само веднъж, за да видите генератора на случайни числа. |
Не приема аргументи. | Взема параметъра, който се използва за засяване на генератора на случайни числа. |
Връща последователността от случайни числа при всяко извикване. | Не връща стойност. |
C ++ Random Float
Функцията rand (), която видяхме по-горе, по подразбиране връща целочислена стойност, която може да причини препълване в определени случаи. По този начин можем да използваме float или двойна стойност. Можем да генерираме плаващи случайни числа, като хвърляме връщащата стойност на функцията rand () на ‘float’.
По този начин следното ще генерира произволно число между float 0.0 и 1.0 (и двете включително).
cout< По същия начин, долният ред ще генерира произволно число между 1,2 и 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
В следващия ни пример по-долу използваме произволен плувка за генериране на изхода.
Случайно число C ++ между 0 и 1
Можем да използваме функцията srand () и rand (), за да генерираме произволни числа между 0 и 1. Имайте предвид, че трябва да прехвърлим изхода на функцията rand () към десетичната стойност или с плаваща, или с двойна стойност.
Възвръщаемата стойност по подразбиране на функцията rand (), т.е.цело число е недостатъчна за показване на случайни числа между 0 и 1, които са фракции.
Дадената по-долу програма C ++ показва първите пет произволни числа между 0 и 1.
отворена адресна хеш таблица c ++
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Изход :

Виждаме, че изходът на програмата е произволно число между 0 и 1, които са дроби.
Ако не зададем върнатата стойност на функцията rand () да плава или да се удвои, тогава ще получим 0 като произволно число.
Случайно число C ++ между 1 и 10
Следващият пример е да се генерират произволни числа между 1 и 10. Следва програмата C ++, която генерира произволни числа.
Извикваме функцията srand със системния часовник и след това извикваме функцията rand с оператори на модул 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. Имайте предвид, че всеки път, когато програмата се изпълнява, тя ще генерира различни набори от числа поради извиканата функция srand.
често задавани въпроси
В # 1) Какво представлява заглавният файл за произволна функция в C ++?
Отговор: Функциите за генериране на случайни числа, rand и srand са дефинирани в< cstdlib > заглавна част на C ++.
В # 2) Какво е Rand_max в C ++?
Отговор: RAND_MAX е константа в заглавката, обикновено зададена на стойност 32767. Генераторът на псевдослучайни числа (PRNG) генерира произволни числа между 0 до RAND_MAX.
В # 3) Как работи случайната функция?
Отговор: C ++ поддържа две произволни функции, т.е. srand () и rand (). Функцията srand () засява генератора на случайни числа, използван от функцията rand (), която генерира последователност от случайни числа в зависимост от първоначалното предоставено начално число.
В # 4) Как се хвърляте с времето?
Отговор: Функцията srand засява генератора на псевдослучайни числа (PRNG), използван от функцията rand (). Стандартна практика е да се използва резултатът от призив към време (0) като начален елемент. Тази функция за време връща стойността, брой секунди от 00:00 часа, 1 януари 1970 г., UTC (текущ клеймо UNIX).
По този начин стойността на семената се променя всяка секунда. Следователно всеки път, когато srand се извика с функция за време, се генерира нов набор от случайни числа.
Заключение
В този урок обсъдихме подробно генерирането на произволни числа. Езиците за програмиране или като цяло компютрите не генерират произволни числа, тъй като са проектирани да предоставят предсказуем изход. Следователно трябва да симулираме произволност.
За да симулираме произволност, използваме генератор на псевдослучайни числа (PRNG), който е вграден в C ++. По този начин, използвайки двете функции, rand () и srand (), можем да генерираме произволни числа в C ++.
Функцията srand () се използва за осигуряване на начален елемент за генериране на случайни числа, докато функцията rand () генерира следващото произволно число в последователността.
=> Потърсете тук цялата серия за обучение на C ++.
Препоръчително четене
- C # Случайно число и C # Генератор на произволни низове с примери за кодове
- Урок за основната функция на Python с практически примери
- Урок за тръби на Unix: Тръби в програмирането на Unix
- Рекурсия в C ++
- Приятелски функции в C ++
- Полиморфизъм в C ++
- Обектно-ориентирано програмиране в C ++
- OOP Java: Въведение в обектно-ориентираното програмиране в Java