Q:

Boost rng vs OpenCV rng vs c++11 std::random?

It is just a simple question, I need some opinions.
I am using both boost and OpenCV, and I want to generate a random number. Which is better to use: the boost::random::uniform_int_distribution (boost random integer generator) or cv::RNG?
I have written this:
// OpenCV RNG:
cv::RNG rngCV(cv::getTickCount());
int randInt = rngCV.uniform(0, 100); // generates integer number in [0, 100)
std::cout << "cv::RNG: " << randInt << std::endl;

// Boost RNG:
boost::random::mt19937 gen(static_cast<unsigned int>(std::time(0)));
boost::random::uniform_int_distribution<> rngBoost(0, 99);
int randInt2 = rngBoost(gen);
std::cout << "boost::random: " << randInt2 << std::endl;

// c++11 random
std::random_device rd;
std::default_random_engine el(rd());
std::uniform_int_distribution< int > unif_distr(0, 99);
int randInt3 = unif_distr(el);
std::cout << "std::random: " << randInt3 << std::endl;

Which one do you suggest me to do? Both are working well.

A:

Since C++11, there is a random generator engine that is in the standard library.
Nothing comparable with the old rand() function from C.
There are a bunch of random distributions, you can specify the interval ... 

