1

System.RandomNext()を使用しているときに、ミリ秒内に複数回呼び出された場合、同じ数値が返されることに気付きました (同じパラメーターがある場合) 。ランダムアルゴリズムは何らかの形でシステムの時間に関係しており、それに依存していると思います。

1ミリ秒以内に何度も呼び出したいのNext()ですが、できれば同じ Random クラスでこれを行う方法はありますか? そうでない場合は、これを解決するリソース/その他の方法をいただければ幸いです。

4

1 に答える 1

6

これは、新しいインスタンスを初期化するときRandomに、シードにシステム クロックを使用するためです。これを 2 回行うと、十分に接近して同じシードを使用することになり、2 つのインスタンスから同じ乱数シーケンスが得られます。

コメントですでに言及されている解決策は、1 つのRandomオブジェクトをインスタンス化し、その上で Next() を繰り返し呼び出すことです。毎回新しい乱数を取得します。

var val1 = new Random().Next();
var val2 = new Random().Next(); // quite likely val1 and val2 will be the same

var rnd = new Random();
var val3 = rnd.Next();
var val4 = rnd.Next(); // very unlikely val3 and val4 will be the same
于 2013-07-25T16:12:46.567 に答える