Раскрытие случайности: изучение различных методов генерации случайных чисел в C++

Генерация случайных чисел — обычное требование в программировании, и C++ предоставляет несколько методов генерации случайных чисел. В этой статье блога мы углубимся в различные методы и примеры кода для генерации случайных чисел в C++. Так что хватайте свою шляпу программиста и отправляйтесь в путешествие, раскрывающее случайность!

  1. Использование функций srand() и time():
    Функция srand() в C++ используется для заполнения генератора случайных чисел. Передавая функцию time() в качестве начального числа, мы можем гарантировать, что генерируемые случайные числа будут разными при каждом запуске программы. Вот пример:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
    srand(time(NULL));
    // Generate a random number between 1 and 100
    int randomNumber = rand() % 100 + 1;
    std::cout << "Random number: " << randomNumber << std::endl;
    return 0;
}
  1. Использование случайного заголовка.
    В C++11 появился заголовок <random>, который обеспечивает более гибкий и современный подход к генерации случайных чисел. Вот пример использования заголовка <random>:
#include <iostream>
#include <random>
int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 100);
    int randomNumber = dis(gen);
    std::cout << "Random number: " << randomNumber << std::endl;
    return 0;
}
  1. Использование заголовка и функции rand():
    До C++11 заголовок <ctime>и функция rand() обычно использовались для генерации случайных чисел. Вот пример:
#include <iostream>
#include <ctime>
int main() {
    std::srand(std::time(nullptr));
    int randomNumber = std::rand() % 100 + 1;
    std::cout << "Random number: " << randomNumber << std::endl;
    return 0;
}
  1. Использование заголовков и :
    C++11 также представил заголовок <chrono>, который предоставляет утилиты для измерения времени. Вот пример объединения заголовков <chrono>и <random>:
#include <iostream>
#include <chrono>
#include <random>
int main() {
    unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
    std::default_random_engine generator(seed);
    std::uniform_int_distribution<int> distribution(1, 100);
    int randomNumber = distribution(generator);
    std::cout << "Random number: " << randomNumber << std::endl;
    return 0;
}

В этой статье блога мы рассмотрели различные методы генерации случайных чисел в C++. Мы начали с традиционных функций srand() и time(), затем перешли к современному заголовку <random>, а также затронули старый заголовок и функцию rand(). Каждый метод имеет свои преимущества и варианты использования, поэтому обязательно выберите тот, который лучше всего соответствует вашим конкретным требованиям. Теперь, когда вы вооружены несколькими подходами, добавьте немного случайности в свои программы на C++!