РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
124 of 815 menu

Класс random_device

Класс random_device представляет собой недетерминированный генератор случайных чисел. В отличие от псевдослучайных генераторов, таких как mt19937, класс random_device использует аппаратные источники энтропии (например, шум процессора или специальные инструкции) для получения действительно случайных значений. Объект класса random_device можно вызвать как функцию, которая возвращает случайное беззнаковое целое число. Также у класса есть методы entropy и min, max, позволяющие получить информацию о диапазоне и качестве генератора.

Конструктор класса принимает необязательный параметр - строку с именем источника энтропии. Если источник не указан, используется реализация по умолчанию.

Синтаксис

#include <random> std::random_device name; std::random_device name(token); unsigned int value = name();

Пример

Давайте создадим объект класса random_device и получим несколько случайных чисел:

#include <iostream> #include <random> using namespace std; int main() { random_device rd; cout << rd() << endl; cout << rd() << endl; cout << rd() << endl; return 0; }

Результат выполнения кода:

3499211612 581869302 3890346734

Пример

Давайте получим информацию о диапазоне и энтропии генератора:

#include <iostream> #include <random> using namespace std; int main() { random_device rd; cout << "Min: " << rd.min() << endl; cout << "Max: " << rd.max() << endl; cout << "Entropy: " << rd.entropy() << endl; return 0; }

Результат выполнения кода:

"Min: 0" "Max: 4294967295" "Entropy: 32"

Пример

Давайте используем random_device для инициализации генератора mt19937 и получим случайное число в заданном диапазоне:

#include <iostream> #include <random> using namespace std; int main() { random_device rd; mt19937 gen(rd()); uniform_int_distribution<> dist(1, 100); cout << dist(gen) << endl; cout << dist(gen) << endl; cout << dist(gen) << endl; return 0; }

Результат выполнения кода:

42 87 15

Смотрите также

  • класс mt19937,
    который представляет собой генератор псевдослучайных чисел
  • класс uniform_int_distribution,
    который генерирует равномерно распределенные целые числа
  • класс uniform_real_distribution,
    который генерирует равномерно распределенные вещественные числа
  • функция rand,
    которая генерирует псевдослучайные числа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить