命名空间
变体
操作

std::seed_seq

来自 cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
 
定义在头文件 <random>
class seed_seq;
(自 C++11 起)

std::seed_seq 使用一系列整数数据并生成请求数量的无符号整数 i0 ≤ i < 232
,基于已使用的数据。生成的数值在整个 32 位范围内分布,即使使用的数据非常接近。

它提供了一种方法来为大量随机数引擎播种,或在给定一个小的种子或一个分布不均的初始种子序列的情况下为需要大量熵的生成器播种。

std::seed_seq 满足 SeedSequence 的要求。

[编辑] 成员类型

成员类型 定义
result_type (C++11) std::uint_least32_t

[编辑] 成员函数

构造并为 std::seed_seq 对象播种
(公共成员函数)
operator=
[已删除] (C++11)
seed_seq 不可赋值
(公共成员函数)
(C++11)
计算无偏差的均匀分布的 32 位数值
(公共成员函数)
(C++11)
获取存储在 std::seed_seq 中的 32 位数值的数量
(公共成员函数)
(C++11)
获取存储在 std::seed_seq 中的 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