乱数ジェネレータをシードにして、異なるプロセッサ上で異なる数列を持つようにするにはどうすればよいですか?C++ RNG:異なるプロセッサで異なるrandジェネレータを取得する方法は?
最初の試みでは、プロセッサのランクをシードとして使用していました。 次に、srand(0)
がsrand(1)
と同じ順序を与えるという難しい方法を見つけました。
現在、私はこれをやっている:
srand(time(NULL) + rank)
これはOKアプローチですか?それとも良い方法がありますか? ありがとう
時間をシードとして使用するのは一般的ですが、それはできません。 – UKMonkey
C++ 11以上の場合は、[''](http://en.cppreference.com/w/cpp/header/random)でジェネレータを使うことを検討してください。 –
NathanOliver
ちょっと@UKMonkey ' time(NULL) 'を返しますが、時にはすべてのprocsが同じシードを取得することがあります。 私は各プロセッサにEVERYTIMEという独自のシードが必要です。 – 0x56794E