在CPP中使用Boost库生成随机数时遇到一些问题。当我尝试打印输出随机数时,该值返回相同的值。这是我的代码。
for(int i = 0; i < TOTAL_PARTICLES; i++) {
boost::random::mt19937 engine(static_cast<unsigned int>(std::time(0)));
randn = boost::bind(boost::random::uniform_real_distribution<>(-2.5, 2.5), engine);
cout << "Random : " << randn() << endl;
}
答案 0 :(得分:1)
您每次都使用相同的引擎种子,因此每次都将收到相同的随机数集。因此,只需像下面这样在for循环之外播种引擎即可:
boost::random::mt19937 engine(static_cast<unsigned int>(std::time(0)));
for(int i = 0; i < TOTAL_PARTICLES; i++)
{
randn = boost::bind(boost::random::uniform_real_distribution<>(-2.5, 2.5), engine);
cout << "Random : " << randn() << endl;
}