私はC++ 11ランダムライブラリについて少し混乱しています。私が理解なぜrandom_deviceを使用しないのですか?
:
- ランダムエンジン(擬似(シードが必要)、または実際とすることができる)
- 分布:それは、特定のエンジンから取得した番号をマッピングし、我々は二つの別々の概念を必要とします間隔、特定の分布を使用します。
std::random_device rd; std::uniform_int_distribution<int> dist(1, 5); // get random numbers with: dist(rd);
を私の知る限り、これがうまく機能言うことができるように:私は理解していない何
はこれを使用しない理由です。
代わりに、これは私がほとんどの例/サイト/記事で見つけたものです:私は、例えば、特殊な用途の話ではないのです
std::random_device rd;
std::mt19937 e{rd()}; // or std::default_random_engine e{rd()};
std::uniform_int_distribution<int> dist{1, 5};
// get random numbers with:
dist(e);
暗号化、あなたの基本的な始めの記事。
std::mt19937
(またはstd::default_random_engine
)はシードを受け入れるため、デバッグセッション中に同じシードを指定するとデバッグが容易になります。
はまた、なぜだけではない:
std::mt19937 e{std::random_device{}()};
_ "多くの実装のrandom_deviceのパフォーマンスは、エントロピープールが使い果たされると急激に低下します。実用的には、random_deviceは一般にmt19937" _ [source](http://en.cppreference。 – Michael
@Michael答えがあるはずです –
答えはより詳細に(たとえば、パフォーマンスが低下するなど)必要になるかもしれません。それで、なぜ私はコメントとして投稿したのですか? – Michael