在多个类中使用一个 Random 对象是否会降低每个类的随机性?

Mik*_*ndy 2 c# random

如果我有两个类,每个类都采用伪随机数生成器 (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());
}
Run Code Online (Sandbox Code Playgroud)

Jep*_*sen 5

只要您只有一个线程,最好Random全部使用同一个实例。

(如果是多线程应用程序,则要么锁定,要么每个线程有一个实例;Random不适用于多线程。)