std::philox_engine<UIntType,w,n,r,consts>::philox_engine
来自cppreference.com
| |
(1) | (C++26 起) |
| |
(2) | (C++26 起) |
| |
(3) | (C++26 起) |
| |
(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,将 Kk 设为 (∑p-1
i=0 ak·p+i·232i
) mod 2w
。
j的值被设为n - 1。
此重载只有在
SeedSeq 满足种子序列 (SeedSequence) 的要求时才会参与重载决议。4) 复制构造函数。构造完成时
*this == other 是 true。
参数
| value | - | 用于内部状态初始化的种子值 |
| seq | - | 用于内部状态初始化的种子序列 |
复杂度
1,2) 常数。
3) 与
seq.generate 调用的复杂度相同。4) 常数。
异常
3) 如果
SeedSeq 不是 std::seed_seq,那么就会抛出 seq.generate 调用抛出的异常。参阅
| 设置引擎的当前状态 (公开成员函数) | |
| 设置引擎的当前计数器 (公开成员函数) |