Random
クラスで使用されているシードを確認することはできますか?
私は Random() クラスを使用しており、Next(int, int) メソッドは後で計算するためにいくつかの整数を生成します。毎回異なる乱数でプログラムを実行する必要がありますが、調査したいエラーが発生することがあります。Random クラスからシードを取得することは可能ですか?エラーが発生した場合、同じシードを再度使用して、同じ乱数を生成できますか?
Random
クラスで使用されているシードを確認することはできますか?
私は Random() クラスを使用しており、Next(int, int) メソッドは後で計算するためにいくつかの整数を生成します。毎回異なる乱数でプログラムを実行する必要がありますが、調査したいエラーが発生することがあります。Random クラスからシードを取得することは可能ですか?エラーが発生した場合、同じシードを再度使用して、同じ乱数を生成できますか?
それをチェックする代わりに、必要なシードで Random オブジェクトを作成する必要があると思います。
Random rnd1 = new Random(); // Different seed every run
Random rnd2 = new Random(1234); // Always generates the same numbers sequence
Random() コンストラクターは、システム クロックを使用してシード値を提供します。これは、乱数ジェネレーターをインスタンス化する最も一般的な方法です。
詳細については、こちらをご覧ください。
Random インスタンスでリフレクションを使用しようとしましたか?
それ以外の場合は、シード値を格納するためにラッパーを使用するか、ラッパーを使用してシード値を含むファイルを作成することもできます。そして、プロセス全体をテストするときに、ファイルからシードを再度ロードして、同じ擬似乱数値を生成します。
Random
値はコンストラクターを超えて保存されないため、 が構築されたシードを取得することはできません。
詳細については、のソース コードをSystem.Random
参照してください。
System.Random
作成したシードを保存するラッパーを作成し、代わりにそのクラスを使用できます。
class MyRandom : Random
{
public readonly int Seed;
public MyRandom(int seed) : base(seed)
{
Seed = seed;
}
}