クラス Random の静的メンバー関数である newSeed() および rand() の呼び出しを並列化しています。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 クラスのすべてのインスタンス (およびすべてのスレッド) のシードを変更しますか?
質問を明確にする必要があるかどうか教えてください。
ありがとうございます。