std::independent_bits_engine<Engine,W,UIntType>::independent_bits_engine
From cppreference.com
< cpp | numeric | random | independent bits engine
| independent_bits_engine(); |
(1) | (C++11以降) |
| explicit independent_bits_engine( result_type s ); |
(2) | (C++11以降) |
| template< class SeedSeq > explicit independent_bits_engine( SeedSeq& seq ); |
(3) | (C++11以降) |
| explicit independent_bits_engine( const Engine& e ); |
(4) | (C++11以降) |
| explicit independent_bits_engine( Engine&& e ); |
(5) | (C++11以降) |
新しい擬似乱数エンジンアダプタを構築します。
1) デフォルトコンストラクタ。基底となるエンジンもデフォルト構築されます。
2) s を使用して基底となるエンジンを構築します。
3) シードシーケンス seq を使用して基底となるエンジンを構築します。
このオーバーロードは、
Sseq が SeedSequence の要件を満たす場合にのみ、オーバーロード解決に参加します。4) e のコピーを使用して基底となるエンジンを構築します。
5) e を使用して基底となるエンジンをムーブ構築します。その後、e は未指定ですが有効な状態を保持します。
目次 |
[編集] パラメータ
| s | - | 基底となるエンジンを構築するために使用する整数値 |
| seq | - | 基底となるエンジンを構築するために使用するシードシーケンス |
| e | - | 初期化に使用する擬似乱数生成エンジン |
[編集] 例外
3) `SeedSeq` が std::seed_seq でない場合、`seq.generate` の呼び出しによってスローされる例外をスローします。
[編集] 例
このコードを実行
#include <iostream> #include <random> int main() { auto print = [](auto rem, auto engine, int count) { std::cout << rem << ": "; for (int i {}; i != count; ++i) std::cout << static_cast<unsigned>(engine()) << ' '; std::cout << '\n'; }; std::independent_bits_engine<std::mt19937, /*bits*/ 1, unsigned short> e1; // default-constructed print("e1", e1, 8); std::independent_bits_engine<std::mt19937, /*bits*/ 1, unsigned int> e2(1); // constructed with 1 print("e2", e2, 8); std::random_device rd; std::independent_bits_engine<std::mt19937, /*bits*/ 3, unsigned long> e3(rd()); // seeded with rd() print("e3", e3, 8); std::seed_seq s {3, 1, 4, 1, 5}; std::independent_bits_engine<std::mt19937, /*bits*/ 3, unsigned long long> e4(s); // seeded with seed-sequence s print("e4", e4, 8); }
実行結果の例
e1: 0 0 0 1 0 1 1 1 e2: 1 1 0 0 1 1 1 1 e3: 3 1 5 4 3 2 3 4 e4: 0 2 4 4 4 3 3 6
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2181 | C++11 | オーバーロード (3) は、`seq.generate` の呼び出しがスローする場合でもスローしませんでした。 | 例外を伝播させます。 |