无论.NET版本如何,对具有相同种子的Random.Next()的第n次调用是否始终生成相同的数字?

时间:2014-01-02 14:43:34

标签: c# random versioning

我是一名新手C#学习者,并构建了一个系统,可以从一组有序的问题中生成问题表。每个问题表都有30个问题从问题集中随机选择。每个问题表由一个整数唯一标识,该整数用作种子值。

由于我不知道随机生成器如何工作的内部细节,我想知道n调用具有相同种子的Random.Next()是否总是产生相同的数字无论.NET版本如何。

最小的工作示例如下。

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int seed = 12345;
            Random rnd = new Random(seed);
            for (int x = 0; x < 10; x++)
                Console.WriteLine(rnd.Next());
        }
    }
}

2 个答案:

答案 0 :(得分:8)

也许请阅读documentation

  

来电者须知

     

在.NET Framework的主要版本中,不保证Random类中随机数生成器的实现保持不变。因此,您的应用程序代码不应假设相同的种子将在.NET Framework的不同版本中产生相同的伪随机序列。

答案 1 :(得分:-3)

是的!如果你提供相同的种子,你有可能获得相同的随机数

Random rnd=new Random(5);
            for(int i=0;i<10;i++)
            {
                Console.WriteLine(rnd.Next());
            }

            Console.WriteLine(".....");

            Random rnd1 = new Random(5);

            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(rnd1.Next());
            }
            Console.ReadLine();
############### 输出
726643700
610783965
564707973
1342984399
995276750
1993667614
314199522
2041397713
1280186417
252243313
.....
726643700
610783965
564707973
1342984399
995276750
1993667614
314199522
2041397713
1280186417
252243313