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 播种一次。但是我在单独的源文件中有很多辅助函数需要使用随机数生成器。例如。具有随机播放功能。
最佳答案
是的,通过引用传递生成器是正确的。 mt19937
的内部状态需要修改才能获得下一个随机数。如果您要按值传递生成器,那么您将复制该状态,然后多个函数将最终获得相同的随机数。这也是您不能通过 const&
传递它的原因,因为如果它是 const
,它将无法修改该内部状态。
关于c++ - 通过引用辅助函数传递随机数生成器 mt19937 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171120/