I am a bit confused about the c++11 random library.
What I understand: we need two separate concepts:
- random engine (which can be pseudo (need seed) or real)
- distribution: it maps the numbers obtained from the engine to a specific interval, using a specific distribution.
What I don't understand is why not just use this:
std::random_device rd;
std::uniform_int_distribution<int> dist(1, 5);
// get random numbers with:
dist(rd);
As far as I can tell this works well.
Instead, this is what I found on most examples/sites/articles:
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);
I am not talking about special use, e.g. cryptography, just your basic getting started articles.
My suspicion is because std::mt19937
(or std::default_random_engine
) accepts a seed, it can be easier to debug by providing the same seed during a debug session.
Also, why not just:
std::mt19937 e{std::random_device{}()};
Aucun commentaire:
Enregistrer un commentaire