为什么 Random 在循环中生成不同的数字?

Why Random generates different numbers in loop?

你好,我想生成随机数,所以我在 class

中创建了方法
        private readonly Random _rand = new Random(); //Private property of class

        public void GenerateRandomNumber()
        {
            //For loop executes 10 times
            for (int i = 1; i < 11; i++)
            {
                Console.WriteLine(_rand.Next(0, 10));
            }
        }

当我从 Main 调用它时,我创建了 class 的新实例,然后调用它。它工作正常,但我想知道为什么每次在 for 循环中以及每次我 运行 程序时都会生成不同的数字?

这对我来说很有趣,因为我知道 Random 可以生成相同的数字,但在我的例子中它生成不同的数字。

私有属性加上static修饰符会有什么影响?

Random 对象不是生成数字的对象。调用 _rand.Next(0, 10) 时,它会生成一个介于 0 和 9 之间的随机数,这就是您每次都获得新数字的原因。 See the documentation for Random.Next()。如果您只想要一个随机数,则需要在循环外调用此方法并将结果存储在一个变量中。

C# 中,您的随机数生成器会根据您的系统时钟自动将种子设置为一个值,从而生成伪随机数。如果您希望每次 运行 程序时您的随机数都以相同的顺序排列,您可以使用以下方法手动设置种子:

seed = 999
private readonly Random _rand = new Random(seed)