Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class random_device

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class random_device

boost::random::random_device

Synopsis

// In header: <boost/random/random_device.hpp>

class random_device : private noncopyable {
public:
  // types
  typedef unsigned int result_type;
  // construct/copy/destruct
  random_device();
  explicit random_device(const std::string &);
  ~random_device();
  // public static functions
  static result_type min();
  static result_type max();
  // public member functions
  double entropy() const;
  unsigned int operator()();
  template<typename Iter> void generate(Iter, Iter);
  // public data members
  static const bool has_fixed_range;
};

Description

Классrandom_deviceмоделинедетерминированного генератора случайных чисел. Он использует один или несколько определяемых реализацией стохастических процессов для генерации последовательности равномерно распределенных недетерминированных случайных чисел. Для тех сред, где недетерминированный генератор случайных чисел недоступен, классrandom_deviceНе допускается. Видишь?

"Randomness Recommendations for Security", D. Eastlake, S. Crocker, J. Schiller, Network Working Group, RFC 1750, December 1994

для дальнейшего обсуждения.

[Note]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.

Платформавремя вызова [микросекунды]
Windows2.9
Linux1.7

Погрешность измерения оценивается в +/- 1 с.

random_device public construct/copy/destruct

  1. random_device();

    Конструируетrandom_device, необязательно используя устройство по умолчанию.

  2. explicitrandom_device(conststd::string&token);

    Конструируетrandom_device, необязательно используя данный токен в качестве спецификации доступа (например, URL) к некоторой услуге, определяемой реализацией для мониторинга стохастического процесса.

  3. <
    ~random_device();
    >

random_device public static functions

  1. staticresult_typemin();

    Возвращает наименьшее значение, которое может произвестиrandom_device.

  2. staticresult_typemax();

    Возвращает наибольшую стоимость, которую может произвестиrandom_device.

random_device public member functions

  1. doubleentropy()const;

    Возвращение: Оценка энтропии для случайных чисел, возвращаемых оператором(), в диапазоне мин() к log2(max()+1). Детерминированный генератор случайных чисел (например, механизм псевдослучайных чисел) имеет энтропию 0.

    Броски: Ничего.

  2. unsignedintoperator()();

    Возвращает случайное значение в диапазоне [мин, макс].

  3. template<typenameIter>voidgenerate(Iterbegin,Iterend);

    Заполняет диапазон случайными 32-битными значениями.


PrevUpHomeNext

Статья Class random_device раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:15:34/0.0070929527282715/0