1. ホーム
  2. c#

[解決済み] ランダムクラスのシードをどのようにすれば、ランダム値の重複を避けることができますか?

2022-06-05 23:58:43

質問

静的クラスの静的メソッド内に以下のようなコードがあります。

Random r = new Random();
int randomNumber = r.Next(1,100);

ループの中にこれを入れていますが、ずっと同じような randomNumber !

ここで何か提案はありますか?

どのように解決するのですか?

新しい Random のインスタンスを作成してはいけません。のようなものを試してみてください。

var rnd = new Random();
for(int i = 0; i < 100; ++i) 
   Console.WriteLine(rnd.Next(1, 100));

で生成される乱数列は、1つの Random インスタンスによって生成される乱数列は、一様に分布しているはずです。新しい Random インスタンスを作成すると、同じ値をシードし、同じ乱数を生成させることができます。もちろん、この場合、生成される列は一様分布とはかけ離れたものになります。

完全を期すために、もし本当に Random の新しいインスタンスを作成します。 Random を新しいシードで作成します。

rnd = new Random(newSeed);