Solution
以下のように定義された名前のクラスがあります。関連するコードのみを含めており、カスタム コピーまたは代入演算子は記述していません。
class Solution {
public:
Solution() {
stream.setNewSeed(seedShift+static_cast<long>(12345));
++seedShift;
}
RandomNumberStream stream;
private:
static long seedShift = 0;
};
Solution
ここでのポイントは、 の新しいインスタンスごとに異なる乱数ストリームを持たせたいということです。これは機能します。
Solution
ただし、問題は、からのインスタンスをコピーstd::vector<Solution>
し、わずかに変更してから、そのコピーを同じ にプッシュする場所がいくつかあることですstd::vector<Solution>
。Solution
これが発生すると、同じ乱数シードを持つ の 2 つのインスタンスが発生し、災害が発生します。
ベクトルにプッシュされたコピーされたインスタンスでstream.setNewSeed(seedShift+static_cast<long>(12345));
andステートメントを実行するにはどうすればよいですか?++seedShift;
Solution