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

标签 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());
}

最佳答案

只要您只有一个线程,最好在所有地方都使用相同的Random实例。

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

关于c# - 在多个类别中使用一个 Random 对象是否会降低每个类别的随机性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482480/

相关文章:

c# - Func<DomainObject,object> 如何将对象名称作为字符串返回

c++ - 从 map 中选择随机元素子集

c# - 为什么我必须显式提供泛型参数类型而编译器应该推断类型?

c# - 简单 C# 程序的惊人不同性能

c# Double.MinValue 和 Double.MaxValue 之间的随机数

c++ - (0,2)之间均匀分布的随机数

mysql - 如何显示来自mysql的随机自动旋转数据?

java仅生成随机 "light"颜色

c# - 从 PropertyGrid 集合属性中删除 "..."按钮

c# - DateTimePicker 需要多次单击复选框才能触发 OnValueChanged