Найти тему
Линукс-мастер

C++ для начинающих: простой генератор случайных чисел

Для генерации псевдослучайного числа в диапазоне от 0 до RAND_MAX включительно, используется функция, которая находится в библиотеке <stdlib.h> и меет вид:

int rand(void);

К сожалению у этого генератора есть недостаток - он выдает всегда одну и ту же последовательность псевдослучайных чисел и поэтому используется в связке с другой функцией, которая устанавливает начальное значение последовательности псевдослучайных чисел, находится в той же библиотеке и имеет вид:

void srand(unsigned int seed);

где seed - без знаковое целое число определяющее начальное значение.

Но это не решает проблему, т.к. в этом случае будет постоянно "генериться" одна и та же последовательность, начиная с заданного значения seed.

Для устранения этого недостатка используются текущие дата/время. Т.е. во время каждого нового вызова будет новое значение времени, которое и будет начальным значением для генерации новой последовательности. Для этого используется функция, которая находится в библиотеке <time.h> и имеет вид:

time_t time(time_t *t);

В качестве аргумента, в данном случае, будет передаваться нулевой указатель NULL.

С теорией закончено 😀! Посмотрим практический пример:

Листинг программы генератора случайных чисел на языке C++
Листинг программы генератора случайных чисел на языке C++

А так выглядит результат работы нашей программы в терминале:

Результат работы программы генератора случайных чисел на языке С++
Результат работы программы генератора случайных чисел на языке С++

Если статья вам понравилась - не забудьте поставить лайк 👍 и подписаться на канал!

Все вопросы и предложения пишите в комментариях.

Наука
7 млн интересуются