Member functions of distributions isn't const mem funcion.
Which is _not_ thread safe. Be aware of using it.
#include <random> std::random_device // Non-deterministic , will block. std::mt19937 // Engine, construct/copy is not fast. std::mt19937_64 // function call ops are not const, _not_ thread safe. std::uniform_int_distribution //function call ops are not const, _not_ thread safe. std::shuffle // use it, _not_ random_shuffle
When is it safe to skip using uniform_int_distribution?
mt19937's [0, 2^32) -> [0, 2^N) , just using bit mask to do it.
No need to call uniform_int_distribution.
sample code:
#include <random>
int main()
{
std::mt19937 mt(1234);
std::uniform_int_distribution<int> dist(0,99);
for (int i = 0; i < 20; ++i)
{
dist(mt);
}
return 0;
}
Reference:
rand() Considered Harmful
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.