![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class random_deviceBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
![]() | Note |
---|---|
Некоторые операционные системы абстрагируют компьютерное оборудование достаточно, чтобы затруднить ненавязчивый мониторинг стохастических процессов. Однако некоторые действительно предоставляют специальное устройство именно для этой цели. Кажется невозможным эмулировать функциональность, используя только стандартный C++, поэтому пользователи должны знать, что этот класс может быть доступен не на всех платформах. |
Записка для Linux
В операционной системе Linux токен интерпретируется как путь файловой системы. Предполагается, что этот путь обозначает псевдоустройство операционной системы, которое генерирует поток недетерминированных случайных чисел. Псевдоустройство никогда не должно сигнализировать об ошибке или окончании файла. В противном случае<std::ios_base::failure
>отбрасывается. По умолчаниюrandom_deviceиспользует псевдо-устройство /dev/urandom для извлечения случайных чисел. Другим вариантом будет указать псевдоустройство /dev/random, которое блокирует считывания, если в пуле энтропии больше нет случайных битов.
Записка для Windows
В операционной системе Windows токен интерпретируется как имя поставщика криптографических услуг. По умолчаниюrandom_deviceиспользует MS_DEF_PROV.
Исполнение
Тестовая программаnondet_random_speed.cppизмеряет время выполнения реализации алгоритмов random_device.hpp в узком цикле. Производительность была оценена на Intel(R) Core(TM) i7 CPU Q 840 @ 1.87GHz, 1867 Mhz с Visual C++ 2010, Microsoft Windows 7 Professional и с gcc 4.4.5, Ubuntu Linux 2.6.35-25-generic.
Платформа | время вызова [микросекунды] |
Windows | 2.9 |
Linux | 1.7 |
Погрешность измерения оценивается в +/- 1 с.
random_device
public
construct/copy/destructrandom_device();
Конструирует
, необязательно используя устройство по умолчанию.random_device
explicitrandom_device(conststd::string&token);
Конструирует
, необязательно используя данный токен в качестве спецификации доступа (например, URL) к некоторой услуге, определяемой реализацией для мониторинга стохастического процесса.random_device
~random_device();>
random_device
public static functionsstaticresult_typemin();
Возвращает наименьшее значение, которое может произвестиrandom_device
.
staticresult_typemax();
Возвращает наибольшую стоимость, которую может произвестиrandom_device
.
random_device
public member functionsdoubleentropy()const;
Возвращение: Оценка энтропии для случайных чисел, возвращаемых оператором(), в диапазоне мин() к log2(max()+1). Детерминированный генератор случайных чисел (например, механизм псевдослучайных чисел) имеет энтропию 0.
Броски: Ничего.
unsignedintoperator()();
Возвращает случайное значение в диапазоне [мин, макс].
template<typenameIter>voidgenerate(Iterbegin,Iterend);
Заполняет диапазон случайными 32-битными значениями.
Статья Class random_device раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |