随机数设置

在运行我们前面的模拟代码中,是否发现一个现象

这将会造成一个问题:如果总共需要模拟 10 亿个事件,分 10 次运行,每次运行 1 亿个事件。那模拟结果将是 1 亿个模拟事件的 10 倍重复。

这是因为默认随机数种子是与电脑硬件相关的,每个电脑是一个固定值(不同电脑不同),因此由该随机种子产生的随机数序列每次都一样。避免这个问题的一个简单方式是人为每次设置不同的随机种子。一个简单的方式是随机种子与当前程序执行的时刻相关联,那么不同次运行时的随机种子就不一样。

main.cc

#include "Randomize.hh"

int main(int argc,char** argv)
{
  G4Random::setTheEngine(new CLHEP::RanecuEngine);
  G4int seconds =  time(NULL);
  G4Random::setTheSeed(seconds);

  // 这里省略   
}