std::philox_engine<UIntType,w,n,r,consts>::philox_engine
来自cppreference.com
< 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 2w
,其他元素都被设为零。 - j 的值被设为 n - 1。
3) 以种子序列 seq 构造引擎。引擎的初始状态通过以下方式确定:[1]
- 序列 X 的所有元素都被设为零。
- 给定 (w - 1) / 32 + 1 为 p,通过以下步骤设置序列 K 的值。
- 创建一个长度是 k + 3 的虚设数组对象。
- 调用 seq.generate(a + 0, a + k + 3)。
- 对于
[
0,
n / 2)
中的每个整数 k,将 K
k 设为 (∑p-1
i=0 a
k·p+i·232i
) mod 2w
。
- j 的值被设为 n - 1。
此重载只有在
SeedSeq
满足种子序列 (SeedSequence) 的要求时才会参与重载决议。4) 复制构造函数。构造完成时 *this == other 是 true。
参数
value | - | 用于内部状态初始化的种子值 |
seq | - | 用于内部状态初始化的种子序列 |
复杂度
1,2) 常数。
3) 与
seq.generate
调用的复杂度相同。4) 常数。
参阅
(C++26) |
设置引擎的当前状态 (公开成员函数) |
(C++26) |
设置引擎的当前计数器 (公开成员函数) |