名稱空間
變體
操作

std::seed_seq

來自 cppreference.com
< cpp‎ | 數值‎ | 隨機
 
 
 
 
 
定義於標頭檔案 <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