std::philox_engine<UIntType,w,n,r,consts>:: philox_engine
From cppreference.net
<
cpp
|
numeric
|
random
|
philox engine
|
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 устанавливаются следующими шагами:
- Создается фиктивный массив a длиной n / 2 * p .
- Вызывается seq. generate ( a + 0 , a + n / 2 * p ) .
-
Для каждого целого числа
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.0 1.1 Буфер Y намеренно не устанавливается. Поскольку j устанавливается в n - 1 , каждый следующий переход состояния всегда генерирует новые случайные значения и сохраняет их в Y .
Содержание |
Параметры
| value | - | начальное значение для инициализации внутреннего состояния |
| seq | - | последовательность начальных значений для инициализации внутреннего состояния |
Сложность
1,2)
Константа.
3)
Такая же, как сложность вызова
seq.generate
.
4)
Константа.
Исключения
3)
Если
SeedSeq
не является
std::seed_seq
, выбрасывает исключения, выброшенные вызовом
seq.generate
.
Смотрите также
|
устанавливает текущее состояние генератора
(публичная функция-член) |
|
|
устанавливает текущий счетчик генератора
(публичная функция-член) |