- random[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class Engine, size_t W, class UIntType>
class independent_bits_engine;
}
independent_bits_engine
クラスは、乱数生成エンジンが生成する乱数をラップし、生成結果のビット数を変更する生成器アダプタである。
32ビット整数を生成するmt19937
をラップして、64ビット整数を生成させる、といったことができる。
テンプレートパラメータは、以下を意味する:
W
: 生成させる整数のビット数
UIntType
: 生成させる符号なし整数型
W > 0
かつW <=
numeric_limits
<UIntType>::
digits
であること。
名前 |
説明 |
対応バージョン |
(constructor) |
コンストラクタ |
C++11 |
~independent_bits_engine() = default; |
デストラクタ |
C++11 |
seed |
シードを設定する |
C++11 |
名前 |
説明 |
対応バージョン |
base |
元となる乱数生成器を取得する |
C++11 |
名前 |
説明 |
対応バージョン |
min |
生成し得る値の最小値を取得する |
C++11 |
max |
生成し得る値の最大値を取得する |
C++11 |
型 |
説明 |
対応バージョン |
result_type |
乱数生成結果型 UIntType 。 |
C++11 |
#include <iostream>
#include <random>
#include <cstdint>
int main()
{
// 32ビット整数を生成するmt19937をラップし、
// 64ビット整数を生成させる
std::independent_bits_engine<std::mt19937, 64, std::uint64_t> engine;
for (int i = 0; i < 10; ++i) {
std::uint64_t result = engine();
std::cout << result << std::endl;
}
}
- std::independent_bits_engine[color ff0000]
- std::mt19937[link mt19937.md]
- std::uint64_t[link /reference/cstdint/uint64_t.md]
- engine()[link independent_bits_engine/op_call.md]
15028999435905310454
16708911996216745849
2342493223442167775
16848810653347327969
11664969248402573611
1799302827895858725
5137385360522333466
10088183424363624464
17662883439475955428
17799051847008967418