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