次の方法で共有


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; };

メンバー

random_device::random_device

random_device::entropy

random_device::operator()

解説

このクラスは乱数のソースを表します。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

参照

関連項目

<random>