Класс random_device
Формирует случайную последовательность с помощью внешнего устройства.
class random_device { public: typedef unsigned int result_type; // cosntructor explicit random_device(const std::string& token = ""); // properties static result_type min(); static result_type max(); double entropy() const; // generate result_type operator()(); // no-copy functions random_device(const random_device&) = delete; void operator=(const random_device&) = delete; };
Члены
Заметки
Этот класс описывает источник случайных чисел и, согласно стандарту ISO C++, может быть недетерминистическим или криптостойким (но это необязательно). В реализации в Visual Studio полученные значения являются недетерминистическими и криптостойкими, но производительность ниже, чем у генераторов, созданных на основе механизмов и адаптеров механизмов (таких как mersenne_twister_engine, самого быстрого и качественного механизма для большинства приложений).
Результаты random_device равномерно распределены в замкнутом диапазоне [0, 232).
Не гарантируется, что random_device приведет к неблокирующему вызову.
В целом, random_device используется для получения начальных значений для других генераторов, созданных с помощью механизмов или адаптеров механизмов. Для получения дополнительной информации см. <random>.
Пример
В следующем коде показаны основные функции класса и результаты его применения. Из-за недетерминистической природы random_device, случайные значения, показанные в разделе Выходные данные, не будут совпадать с вашими результатами. Подобный результат является нормальным и ожидаемым.
// random_device_engine.cpp
// cl.exe /W4 /nologo /EHsc /MTd
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device gen;
cout << "entropy == " << gen.entropy() << endl;
cout << "min == " << gen.min() << endl;
cout << "max == " << gen.max() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
}
Результат
Этот пример упрощен и не представляет собой общего примера применения этого генератора. Более полный пример содержится в разделе <random>.
Требования
Заголовок: <random>
Пространство имен: std