如果我的应用程序以.NET framework 3.5为目标,每个CPU是否根据相同的种子返回相同的随机序列?我正在检查你是否得到了与我相同的结果.我也希望我分发应用程序的每个人都能得到相同的结果.谢谢!
Random a = new Random(44448);
int i1 = a.Next(65, 90);
MessageBox.Show(i1.ToString());
Run Code Online (Sandbox Code Playgroud)
对于特定的框架版本,由于修复的种子,每次运行时程序应该给出相同的结果.
但它可以在不同版本的.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的不同版本中产生相同的伪随机序列.
强调我的.无法保证未来的实现将使用相同的算法.