0

KEYS と VALS の 2 つの配列があり、それらを一斉にランダムにシャッフルしたいとします (シャッフル後、キーと値のペアの一致を保持する必要があります)。

random 関数に静的な値をシードしてから、KEYS で std::random_shuffle を呼び出すと、VALS は両方の配列が同じようにシャッフルされますか?

4

1 に答える 1

1

はい、そうしますが、最初にシャッフルしてから乱数ジェネレーターに同じ値をシードしてから、もう一度シャッフルする場合に限ります。また、両方に同じシャッフル関数を使用する必要があります。rand() を異なる回数呼び出す場合としない場合がある異なるシャフラーを使用することは危険です。
ただし、何らかの方法でデータを関連付けることをお勧めします。マップを実装するか、データを構造体にまとめることができます。配列を別々に保ち、ランダム関数がまったく同じ方法で配列をシャッフルすることを信頼すると、問題が発生します。

于 2013-11-01T20:58:59.640 に答える