C++11 introduces several pseudo-random number generators designed to replace the good-old
rand from the C standard library. I’ll show basic usage examples of
std::mt19937, which provides a random number generation based on Mersenne Twister algorithm. Using the Mersenne Twister implementation that comes with C++1 has advantage over
rand(), among them:
mt19937has much longer period than that of
rand, e.g. it will take its random sequence much longer to repeat itself.
- It much better statistical behavior.
- Several different random number generator engines can be initiated simultaneously with different seed, compared with the single “global” seed
The downside is that
mt19937 is a bit less straight-forward to use. However, I hope this post will help with this point :-).