random_device クラス
外部デバイスからランダム シーケンスを生成します。
class random_device { public: typedef unsigned int result_type; // cosntructor explicit random_device(const std::string& token = ""); // properties static result_type min(); static result_type max(); double entropy() const; // generate result_type operator()(); // no-copy functions random_device(const random_device&) = delete; void operator=(const random_device&) = delete; };
メンバー
解説
このクラスは乱数のソースを表します。ISO C++ 標準では、非確定的または暗号的に安全であることが認められていますが、要求されていはいません。 Visual Studio の実装では、生成される値は非確定的で暗号的に安全ですが、エンジンやエンジン アダプター (mersenne_twister_engine など、大部分のアプリケーションで選択される高品質で高速のエンジン) から作成されるジェネレーターよりも実行は遅いです。
random_device の結果は、閉じた範囲 [0, 232) で一様に分布します。
random_device が非ブロッキング呼び出しになることは保証されていません。
一般に、random_device は、エンジンまたはエンジン アダプターで作成された他のジェネレーターにシードを設定するために使用されます。 詳細については、「<random>」を参照してください。
使用例
次のコードは、このクラスの基本的な機能と結果の例を示しています。 random_device の持つ非確定的な特性のため、出力セクションに表示される乱数値は各人の結果と一致しません。 これは想定されている正常な動作です。
// random_device_engine.cpp
// cl.exe /W4 /nologo /EHsc /MTd
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device gen;
cout << "entropy == " << gen.entropy() << endl;
cout << "min == " << gen.min() << endl;
cout << "max == " << gen.max() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
}
Output:
これは単純な例であり、このジェネレーターの一般的な使用例を表しているわけではありません。 代表的なコード例については、「<random>」を参照してください。
必要条件
ヘッダー: <random>
名前空間: std