Namespaces
Variants

std::philox_engine<UIntType,w,n,r,consts>:: philox_engine

From cppreference.net
philox_engine ( ) : philox_engine ( default_seed ) { }
(1) (начиная с C++26)
explicit philox_engine ( result_type value ) ;
(2) (начиная с C++26)
template < class SeedSeq >
explicit philox_engine ( SeedSeq & seq ) ;
(3) (начиная с C++26)
philox_engine ( const philox_engine & other ) ;
(4) (начиная с C++26)
(неявно объявлен)

Создает генератор псевдослучайных чисел.

1) Конструктор по умолчанию.
  • Если движок, созданный конструктором по умолчанию, имеет тип std::philox4x32 , то 10000-е последовательное его использование выдаёт значение 1955073260 .
  • Если движок, созданный конструктором по умолчанию, имеет тип std::philox4x64 , то 10000-е последовательное его использование выдаёт значение 3409172418970261260 .
2) Создает генератор со значением зерна value . Начальное состояние генератора определяется следующим образом: [1]
  • Все элементы последовательности X устанавливаются в ноль.
  • Первый элемент последовательности K устанавливается в value mod 2 w
    , остальные элементы устанавливаются в ноль.
  • Значение j устанавливается в n - 1 .
3) Создает генератор с последовательностью инициализации seq . Начальное состояние генератора определяется следующим образом: [1]
  • Все элементы последовательности X устанавливаются в ноль.
  • Принимая ( w - 1 ) / 32 + 1 как p , элементы последовательности K устанавливаются следующими шагами:
  1. Создается фиктивный массив a длиной n / 2 * p .
  2. Вызывается seq. generate ( a + 0 , a + n / 2 * p ) .
  3. Для каждого целого числа k в [ 0 , n / 2 ) , устанавливает K k в (∑ p-1
    i=0
    a k·p+i ·2 32i
    ) mod 2 w
    .
  • Значение j устанавливается в n - 1 .
Эта перегрузка участвует в разрешении перегрузки только если SeedSeq удовлетворяет требованиям SeedSequence .
4) Конструктор копирования. При создании, * this == other является true .


  1. 1.0 1.1 Буфер Y намеренно не устанавливается. Поскольку j устанавливается в n - 1 , каждый следующий переход состояния всегда генерирует новые случайные значения и сохраняет их в Y .

Содержание

Параметры

value - начальное значение для инициализации внутреннего состояния
seq - последовательность начальных значений для инициализации внутреннего состояния

Сложность

1,2) Константа.
3) Такая же, как сложность вызова seq.generate .
4) Константа.

Исключения

3) Если SeedSeq не является std::seed_seq , выбрасывает исключения, выброшенные вызовом seq.generate .

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

устанавливает текущее состояние генератора
(публичная функция-член)
устанавливает текущий счетчик генератора
(публичная функция-член)