私がこれを持っている場合:(私はすでに変数を宣言しました)
random1 = new Random();
Console.WriteLine(random1.Next(1, 100));
Console.WriteLine(random1.Next(1, 100));
それがあると、console.writelineを呼び出すたびに異なる番号が生成されるため、exが生成されます。10、55そしてもう一度20,60をやれば、基本的に毎回乱数がいいです。しかし、これを追加すると:
random2 = new Random();
Console.WriteLine(random1.Next(1, 100));
Console.WriteLine(random1.Next(1, 100));
Console.WriteLine(random2.Next(1, 100));
Console.WriteLine(random2.Next(1, 100));
Random1はランダムと同じ数を生成します!だからそれは元になります。5,54,5,54そして私がそれをもう一度やれば70,34,70,34。しかし、random2は新しいオブジェクトなので、なぜrandom1と同じ数を生成するのですか?
別の例:このようなクラスがある場合
class RandomNumber
{
Random random = new Random();
public int getrandomnumber { get { return random.Next(1, 5); } }
}
これを行った後
randomnumberobject = new RandomNumber();
randomnumberobject2 = new RandomNumber();
Console.WriteLine(randomnumberobject.getrandomnumber);
Console.WriteLine(randomnumberobject2.getrandomnumber);
それらは乱数を生成しますが、両方ともまったく同じ乱数を生成します。したがって、初めてこの5,5を取得し、2回目はこの3,3というようになります。しかし、クラスをこれに変更すると
class RandomNumber
{
Random random;
public int getrandomnumber { get { return random.Next(1, 5); } }
public RandomNumber(Random random) { this.random = random; }
}
そして代わりにこれを行う
random = new Random();
randomnumberobject = new RandomNumber(random);
randomnumberobject2 = new RandomNumber(random);
Console.WriteLine(randomnumberobject.getrandomnumber);
Console.WriteLine(randomnumberobject2.getrandomnumber);
突然、両方とも異なる乱数を生成します!では、なぜこれが起こるのでしょうか?どういう理由ですか?覚えておいてください、私はまだ初心者のようなものです。