提升rng vs OpenCV rng vs c ++ 11 std :: random?

时间:2014-07-31 12:27:30

标签: c++ opencv boost

这只是一个简单的问题,我需要一些意见。

我正在使用boostOpenCV,我想生成一个随机数。哪个更好用:boost::random::uniform_int_distribution(提升随机整数生成器)或cv::RNG

我写了这个:

// 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;

你建议我做哪一个?两者都运作良好。

2 个答案:

答案 0 :(得分:2)

升级界面更像是进入标准的界面。因此,如果你计划在某个时候走这条路线,那么如果你正在使用助推器,可能会更容易改变。

答案 1 :(得分:2)

从C ++ 11开始,标准库中就有一个随机生成器引擎。 没有什么能比得上C的旧rand()函数了。 有一堆随机分布,你可以指定间隔......