通过引用辅助函数传递随机数生成器mt19937是否正确?

时间:2016-12-15 18:38:04

标签: c++ c++11 random

int helper( mt19937& generator ){ 

    do stuff; 
    return 0; 

}

#include "helper.h" 
// helper function defined in separate source file and included in header

mt19937 generator(time(NULL));

int main( ) {

    help(generator);

}

创建和播种mt19937随机数生成器是否正确,然后通过引用将其传递给函数使用?

我这样做是因为我知道我只想播种一次mt19937。但是我在需要使用随机数生成器的单独源文件中有很多辅助函数。例如。使用随机播放功能。

1 个答案:

答案 0 :(得分:7)

是的,通过引用传递发电机是正确的。 mt19937具有需要修改以获取下一个随机数的内部状态。如果您按值传递生成器,那么您将复制该状态,然后多个函数将获得相同的随机数。这也是您无法通过const&传递它的原因,因为如果它是const,它将无法修改该内部状态。