std::seed_seq
来自 cppreference.cn
定义在头文件 <random> |
||
class seed_seq; |
(自 C++11 起) | |
std::seed_seq
消耗整数值数据序列,并根据消耗的数据生成请求数量的 32 位无符号整数值。即使消耗的值接近,生成的值也分布在整个 32 位范围内。
它提供了一种方法,可以使用小的种子或分布不佳的初始种子序列,来为大量随机数引擎播种,或者为需要大量熵的生成器播种。
std::seed_seq
满足 SeedSequence 的要求。
目录 |
[编辑] 嵌套类型
类型 | 定义 |
result_type
|
std::uint_least32_t |
[编辑] 数据成员
成员 | 描述 |
std::vector<result_type> v |
底层种子序列 (仅用于说明的成员对象*) |
[编辑] 成员函数
构造并播种 std::seed_seq 对象(公共成员函数) | |
operator= [已删除] |
std::seed_seq 不可赋值(公共成员函数) |
计算消除偏差的均匀分布的 32 位值 (公共成员函数) | |
获取存储的 32 位值的数量 (公共成员函数) | |
复制所有存储的 32 位值 (公共成员函数) |
[编辑] 示例
运行此代码
#include <cstdint> #include <iostream> #include <random> int main() { std::seed_seq seq{1, 2, 3, 4, 5}; std::vector<std::uint32_t> seeds(10); seq.generate(seeds.begin(), seeds.end()); for (std::uint32_t n : seeds) std::cout << n << '\n'; }
可能的输出
4204997637 4246533866 1856049002 1129615051 690460811 1075771511 46783058 3904109078 1534123438 1495905678