如果我有两个类,每个类都将伪随机数生成器 (PRNG) 作为依赖项,并且我将相同的 PRNG 实例传递给这两个类,这是否会损害 PRNG 算法?例如,在下面的代码中,每个类最终在 while 循环中使用相同序列的所有其他随机数,因为它们共享相同的生成器。每个类都获得一个单独的实例更合适还是有关系?
Random rand = new Random();
RandomBool randBool = new RandomBool(rand);
RandomFirstName randFirstName = new RandomBool(rand);
while(<condition>)
{
bool myBool = randBool.Next();
string myName = randFirstName.Next();
Console.WriteLine(myName + " " + myBool.ToString());
}
最佳答案
只要您只有一个线程,最好在所有地方都使用相同的Random
实例。
(如果它是一个多线程应用程序,要么锁定,要么每个线程拥有一个实例;Random
将不适用于多线程。)
关于c# - 在多个类别中使用一个 Random 对象是否会降低每个类别的随机性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482480/