Как получить случайные числа в C++?

В C++ существует несколько способов получения случайных чисел. Рассмотрим два наиболее распространенных способа.

Первый способ - использование функций из стандартной библиотеки. Для этого необходимо подключить заголовочный файл <random>, который содержит классы и функции для работы с генерацией случайных чисел.

Пример использования:

#include <iostream>
#include <random>

int main() {
    // Инициализация генератора случайных чисел
    std::random_device rd;
    std::mt19937 gen(rd());

    // Генерация случайного числа в заданном диапазоне
    std::uniform_int_distribution<> dis(1, 100);
    int random_number = dis(gen);

    // Вывод случайного числа
    std::cout << "Случайное число: " << random_number << std::endl;

    return 0;
}

В данном примере используется класс std::mt19937 для генерации случайных чисел. Он инициализируется с помощью std::random_device, который создает некоторое случайное число, используемое в качестве сида для генератора.

Функция std::uniform_int_distribution<> позволяет задать диапазон для генерации случайных чисел. В примере указан диапазон от 1 до 100.

Второй способ - использование функций из стандартной библиотеки C. Для этого необходимо подключить заголовочный файл <cstdlib> и использовать функцию rand() для генерации случайных чисел.

Пример использования:

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    // Инициализация сида генератора случайных чисел
    std::srand(std::time(nullptr));

    // Генерация случайного числа в заданном диапазоне
    int random_number = std::rand() % 100 + 1;

    // Вывод случайного числа
    std::cout << "Случайное число: " << random_number << std::endl;

    return 0;
}

В данном примере функция std::srand() инициализирует сид генератора случайных чисел. В качестве сида используется текущее время, полученное с помощью функции std::time(nullptr).

Функция std::rand() генерирует случайное число в диапазоне от 0 до RAND_MAX. Для получения случайного числа в заданном диапазоне используется операция остатка от деления (%). В примере указан диапазон от 1 до 100.

Оба способа генерации случайных чисел имеют свои преимущества и недостатки. В первом случае, используя классы из стандартной библиотеки, можно легко настроить различные распределения, например, равномерное или нормальное. Во втором случае, функции из стандартной библиотеки C являются более простыми в использовании, но менее мощными и гибкими.