29 Numerics library [numerics]

29.6 Random number generation [rand]

29.6.6 Class random_­device [rand.device]

random_­device Равномерный случайный бит генератор производит недетерминированные случайные числа.

Если ограничения реализации не позволяют генерировать недетерминированные случайные числа, реализация может использовать механизм случайных чисел.

class random_device {
public:
  // types
  using result_type = unsigned int;

  // generator characteristics
  static constexpr result_type min() { return numeric_limits<result_type>::min(); }
  static constexpr result_type max() { return numeric_limits<result_type>::max(); }

  // constructors
  explicit random_device(const string& token = implementation-defined);

  // generating functions
  result_type operator()();

  // property functions
  double entropy() const noexcept;

  // no copy functions
  random_device(const random_device& ) = delete;
  void operator=(const random_device& ) = delete;
};

explicit random_device(const string& token = implementation-defined);

Effects: Создает random_­device недетерминированный однородный объект генератора случайных битов. Семантика и значение token параметра по умолчанию определяются реализацией.271

Throws: Значение типа, определяемого реализацией, производное от, exception если random_­device не удалось инициализировать.

double entropy() const noexcept;

Returns: Если реализация использует механизм случайных чисел, возвращается 0.0. В противном случае возвращает оценку энтропии272 для случайных чисел, возвращаемых operator()в диапазоне min() до log2(max()+1).

result_type operator()();

Returns: Недетерминированное случайное значение, равномерно распределенное между min() и max()включительно. Это определяется реализацией , как генерируются эти значения.

Throws: Значение типа, определяемого реализацией, полученное в exception случае, если не удалось получить случайное число.

Параметр предназначен для того, чтобы реализация могла различать разные источники случайности.

Если у устройства есть n состояния, соответствующие вероятности которых равны P0,,Pn1, энтропия устройства S определяется как
S=n1i=0PilogPi.