freeCodeCamp/guide/russian/cplusplus/random-functions/index.md

7.1 KiB
Raw Blame History

title localeTitle
Random Functions Случайные функции
  • Случайные числа - это удобный способ введения рандомизации в вашу программу. Например, если вы хотите запускать какие-либо симуляции или играть в игры, удаляйте случайные индексы массива и т. Д., Тогда случайные числа - это путь.
  • Файл заголовка для включения случайных чисел в c ++ - cstdlib .
  • Pro tip: - Вы можете использовать cpp #include<bits/stdc++.h> чтобы включить все функции из всех файлов заголовков.

Функция: - rand ()
- Возвращает псевдослучайное число (целое число) от 0 до RAND MAX. Не принимает никаких аргументов. - RAND MAX - максимально допустимое целое число. Это компилятор depedent и обычно составляет 2147483647.

Ниже приведен пример: -

#include <cstdlib> 
 #include <iostream> 
 using namespace std; 
 
 int main() { 
  cout << rand() << endl; 
  cout << rand() << endl; 
  cout << rand() << endl; 
  return 0; 
 } 
 
 /* 
 Output:- (Note that the output is random and will differ from what is mentioned here) 
 1804289383 
 846930886 
 1681692777 
 */ 

Теперь запустите программу еще раз. И опять. И опять. Что ты видишь? Тот же вывод печатается снова и снова.

Давайте вернемся к определению функции rand (): -

rand (): - возвращает псевдослучайное число (целое число) от 0 до RAND_MAX. Не принимает никаких аргументов.

Итак, что такое псевдослучайное число?

  • Как следует из названия, число, которое не является действительно случайным, является псевдослучайным.
  • Псевдоэкспертные номера arent криптографически безопасны и уязвимы для атак.
  • В контексте C ++ число кажется случайным, но не по-настоящему случайным. Функция предполагает, что каждое число от 0 до RAND_MAX одинаково вероятно и выплескивает одно число. (В действительности, это не тот случай, но он близок). Например, число 5 используется почти везде. Если случайное число плюет 5, вы можете не думать, что число является интактным, случайным.
  • Случайное funtion rand () принимает очень большое число, применяется по модулю большим простым числом и выполняет все виды операций над числом и возвращает значение. Как бы он ни был сложным, его все еще можно сломать.

Как мы получаем уникальный набор случайных чисел, выполняемых при выполнении каждой программы?

Мы используем void srand(int seed) ;

  • «Семя» - это имя, присвоенное числу, которое запускает генератор случайных последовательностей каждый раз в другой отправной точке. Это гарантирует, что случайная функция не выплевывает одинаковые значения во время прогона программы.
  • Важно только вызвать вызов srand ONCE в начале программы.
  • Нет необходимости в повторных вызовах для генерации генератора случайных чисел (фактически, это сделает ваш номер менее равномерным распространяемый).
  • Обычно используемый метод заключается в том, чтобы засевать генератор случайных чисел с использованием часов, поскольку часы дают вам разные результаты каждый раз, когда вы смотрите на него. Итак, для семени вы можете взять время и подключить его к генератору случайных чисел.
  • Функция time () вернет время компьютера. Это выражается в терминах количества секунды, прошедшие с 1 января 1970 года (Эпоха).
  • Время функции (NULL) вернет количество секунд, прошедших в компьютерное время.
  • Файл заголовка, который должен быть включен для функций времени: `ctime '.

Фрагмент кода:

#include <ctime> 
 
 srand(time(NULL)); 
 cout << rand(); 
 
 /* 
 Output: (Will differ from computer to computer, and because of the seed, will also differ from time to time, literally. :D) 
 1696269016 
 */ 

Это дает разные значения при каждом запуске программы.

Бонус: Тонкая настройка rand () для вашего удобства.

  • Так как rand () возвращает случайное число от 0 до RAND_MAX, если вы хотите, например, число от 0 до 8, -rand ()% 9. Любое число по модулю 9 вернет значение от 0 до 8.

  • Более формально, если вы хотите, чтобы число между L (включительно) и U (включительно), вы должны сделать int num = L + rand()%(U-L+1). Объяснение: - rand ()% (UL + 1) возвращает случайное (псевдослучайное, не забытое) число с 0 и (UL). Следовательно, добавление L гарантирует, что мы получим значение между L и U.

    Резюме:-

  1. int rand (): возвращает случайное число между 0 и RAND_MAX.

  2. void srand (int seed): используется для засева генератора случайных чисел. Достаточно вызвать эту функцию только один раз .

    Источники: - Генерация случайных чисел