std::seed_seq::seed_seq
来自cppreference.com
数值库
伪随机数生成
均匀随机位生成器 | ||||
(C++20)
|
||||
引擎及引擎适配器 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
非确定性生成器 | ||||
(C++11)
|
||||
分布 | ||||
均匀分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
伯努利分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
泊松分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
正态分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
采样分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
种子序列 | ||||
(C++11)
|
||||
C 库 | ||||
std::seed_seq
成员函数 | ||||
seed_seq::seed_seq
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
seed_seq() noexcept;
|
(1) | (C++11 起) |
seed_seq( const seed_seq& ) = delete;
|
(2) | (C++11 起) |
template< class InputIt >
seed_seq( InputIt begin, InputIt end ); |
(3) | (C++11 起) |
template< class T >
seed_seq( std::initializer_list<T> il ); |
(4) | (C++11 起) |
1) 默认构造函数创建拥有零长度初始种子序列的
std::seed_seq
对象。
2) 复制构造函数被删除:
std::seed_seq
不可复制。3) 构造
(即复制低 32 位)为初始种子序列。
std::seed_seq
,以拥有从范围
[begin, end)
上迭代并以解引用迭代器复制值获得的值 modulo 232(即复制低 32 位)为初始种子序列。
参数
begin, end | - | 初始种子序列,表示为一对 std::iterator_traits<>::value_type 为整数类型的输入迭代器 |
il | - | 整数类型对象的 std::initializer_list ,提供初始种子序列 |
类型要求 | ||
-InputIt 必须符合老式输入迭代器
(LegacyInputIterator)
的要求。
|
异常
3-4) 在分配失败时抛出 std::bad_alloc 。
示例
运行此代码
#include <random> #include <sstream> #include <iterator> int main() { std::seed_seq s1; // 可默认构造 std::seed_seq s2{1, 2, 3}; // 能用列表初始化 std::seed_seq s3 = {-1, 0, 1}; // 列表初始化的另一种形式 int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; std::seed_seq s4(a, a + 10); // 能用迭代器 std::istringstream buf("1 2 3 4 5"); std::istream_iterator<int> beg(buf), end; std::seed_seq s5(beg, end); // 即使是流输入迭代器 }
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3422 | C++11 | 默认构造函数决不失败但可以不是 noexcept ; 初始化器列表构造函数禁用源自迭代器对的列表初始化 |
使之为 noexcept ; 已约束 |