用种子生成随机数

sca*_*cci 2 c# random .net-4.5

如果我在.Net(4.5)中使用Random类并且我总是使用相同的种子来生成1000个数字,那么在不同的机器上(使用diff芯片组/核心数等),我的1000个数字可能会有所不同吗?我不明白这是怎么回事,但我的一位同事告诉我们,我们需要意识到他们可能会这样.我所做的测试似乎总是一致的.只是担心我可以有一个场景,我可以得到不同的数字.如果我试图平息这一代或其他东西,我可以理解它是不同的.

int seed = 99;
var random = new Random(seed);

for (int i = 0; i < 1000; i++)
   random.Next();
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 8

在运行相同框架的不同PC之间听起来不太可能(意思是:你可以合理地期望相同的序列) - 但MS保留更改实现的权利.MSDN声明:

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

所以:如果您需要更强的保证:使用您自己的PRNG实施.有很多这样的选择.