如果我使用.Net(4.5)中的随机类,并且总是使用相同的种子来生成1000个数字,那么在另一台机器上(有不同的芯片组/核数等),我的1000个数字可能会有所不同吗?我不知道这是怎么回事,但我的一位同事告诉我,我们需要意识到他们是有可能的。我所做的测试似乎总是一致的。只是担心我可能会得到不同的数字。我可以理解,如果我试图平分这代人或什么的话,那是不同的。
int seed = 99;
var random = new Random(seed);
for (int i = 0; i < 1000; i++)
random.Next();发布于 2013-10-24 16:32:00
在不同的PC机之间运行相同的框架听起来不太可能(意思是:您可以合理地预期相同的序列)--但是MS保留更改实现的权利。MSDN声明:
随机类中随机数生成器的实现不能保证在.NET框架的主要版本中保持不变。因此,应用程序代码不应假设相同的种子将导致不同版本的.NET框架中相同的伪随机序列。
因此:如果您需要更强的保证:使用您自己的PRNG实现。有很多这样的选择。
发布于 2013-10-24 16:32:49
根据这个链接,在所有情况下,.Net 4.5都会得到相同的序列,不确定这是否适用于不同版本的.Net框架(与前面的答案一致)。
MSDN
“向不同的随机对象提供相同的种子值会使每个实例产生相同的随机数序列。”
https://stackoverflow.com/questions/19571521
复制相似问题