我正在学习 C# 并在我的程序中创建了一个包含随机数生成器的类:
class RandomNumberGenerator
{
Random RNG = new Random();
// A bunch of methods that use random numbers are in here
}
在这个类中有一些使用 RNG 的方法。数据从程序的其他部分发送到这里,经过处理,然后返回。其中一种方法执行以下操作:
// Method works something like this
int Value1 = RNG.Next(x, y);
int Value2 = RNG.Next(x, y);
int Value3 = RNG.Next(x, y);
,x
值y
将从另一个类发送到这里。因此,我必须RandomNumberGenerator
在该类中创建一个实例,以便调用它的方法并将 x 和 y 值传递给它。
class DoStuff
{
RandomNumberGenerator Randomizer = new RandomNumberGenerator
// Here I call a bunch of Randomizer methods that give me values I need
}
上述方法中的问题是,我每次对所有三个值都得到相同的数字。我不确定是不是因为它们靠得很近,而Randomizer
' 的种子值还没有来得及改变,或者我在创建RandomNumberGenerator
类的新实例时做错了什么。
我已经在这里找到了一堆答案,通常这样的问题是由于人们Random
在运行方法时创建了许多新对象(因此将所有这些对象的种子设置为相同的值),但Random
我唯一的新对象create 在RandomNumberGenerator
类内。然后我在另一个类中实例化一次,这样我就可以向它传递数据并使用它的方法。
为什么会发生这种情况,我将如何解决这个问题?