1

Randomクラスで使用されているシードを確認することはできますか?

私は Random() クラスを使用しており、Next(int, int) メソッドは後で計算するためにいくつかの整数を生成します。毎回異なる乱数でプログラムを実行する必要がありますが、調査したいエラーが発生することがあります。Random クラスからシードを取得することは可能ですか?エラーが発生した場合、同じシードを再度使用して、同じ乱数を生成できますか?

4

3 に答える 3

3

それをチェックする代わりに、必要なシードで Random オブジェクトを作成する必要があると思います。

Random rnd1 = new Random(); // Different seed every run
Random rnd2 = new Random(1234); // Always generates the same numbers sequence

Random() コンストラクターは、システム クロックを使用してシード値を提供します。これは、乱数ジェネレーターをインスタンス化する最も一般的な方法です。

詳細については、こちらをご覧ください。

于 2014-11-09T11:36:28.533 に答える
0

Random インスタンスでリフレクションを使用しようとしましたか?

それ以外の場合は、シード値を格納するためにラッパーを使用するか、ラッパーを使用してシード値を含むファイルを作成することもできます。そして、プロセス全体をテストするときに、ファイルからシードを再度ロードして、同じ擬似乱数値を生成します。

于 2014-11-09T11:39:41.097 に答える
0

Random値はコンストラクターを超えて保存されないため、 が構築されたシードを取得することはできません。

詳細については、のソース コードSystem.Random参照してください。

System.Random作成したシードを保存するラッパーを作成し、代わりにそのクラスを使用できます。

class MyRandom : Random
{
    public readonly int Seed;

    public MyRandom(int seed) : base(seed)
    {
        Seed = seed;
    }
}
于 2014-11-09T11:39:12.063 に答える