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 std::uint_least32_t

[编辑] 成员函数

构造并播种 std::seed_seq 对象
(公开成员函数)
operator=
[删除]
不可复制赋值
(公开成员函数)
计算偏差消除的均匀分布的 32 位值
(公开成员函数)
获得存储于 std::seed_seq 的 32 位值的数量
(公开成员函数)
获得存储于 std::seed_seq 的 32 位值
(公开成员函数)

[编辑] 示例

#include <random>
#include <cstdint>
#include <iostream>
 
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