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; };
Members
備註
此類別會描述亂數的來源,且允許 (但不一定需要) 是不具決定性,或是由 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;
}
輸出:
這是針對此產生器的最簡化範例,不代表一般使用情況。 如需較有代表性的程式碼範例,請參閱 <random>。
需求
標頭:<random>
命名空間: std