提高随机数不变

时间:2019-05-28 15:09:13

标签: c++ random boost random-seed

在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;
        }

1 个答案:

答案 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;
}