随机数种子针对相同版本的.NET框架

如果我的应用程序以.NET framework 3.5为目标,每个CPU是否根据相同的种子返回相同的随机序列? 我正在检查你是否得到了与我相同的结果。 我也希望我分发应用程序的每个人都能得到相同的结果。 谢谢!

Random a = new Random(44448); int i1 = a.Next(65, 90); MessageBox.Show(i1.ToString()); 

对于特定的框架版本,由于修复的种子,每次运行时程序应该给出相同的结果。

但它可以在不同版本的.NET框架上提供不同的结果。

例如,在.NET 4.0上我得到77 。 但是将代码放入ideone (使用Mono)会产生67

造成这种差异的原因是因为Random使用的精确算法不是规范的一部分。 该文档包含有关该算法的信息:

Random类的当前实现基于Donald E. Knuth的减法随机数生成器算法的修改版本。 有关更多信息,请参阅DE Knuth。 “计算机编程的艺术,第2卷:研究数学算法”。 Addison-Wesley,Reading,MA,第二版,1981。

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

强调我的。 无法保证未来的实现将使用相同的算法。