我正在并行调用 newSeed() 和 rand(),Random 类的静态成员函数。newSeed() 提供类 Random 的静态成员(我们称之为种子)。更具体地说,我在另一个类 Method 类中并行调用此函数:
double* Method::randomPoint(double* bottom_, double* top_ )
{
try{
Random generator_ ;
double* pt_ = new double[m_ndim];
generator_.newSeed();
for(int i=0;i<m_ndim;i++)
{
pt_[i]= generator_.rand(bottom_[i],top_[i]);
}
return pt_;
}
catch(...)
{
return NULL;
}
}
总而言之,在每个并行化调用中,我创建了一个类 Random 的新实例,我在这个对象中调用了 newSeed() 和 rand() 方法。由于 newSeed() 在给定实例上被调用,我希望 newSeed() 为这个对象初始化种子成员 - 因此只为这个线程。由于种子是静态的并且 newSeed() 也是静态的,我是否正在为所有当前正在运行的 Random 类实例(以及所有线程)修改种子?
请告诉我是否必须澄清问题。
谢谢并恭祝安康。