Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当没有种子时,类随机种子是什么?_C#_.net_Random - Fatal编程技术网

C# 当没有种子时,类随机种子是什么?

C# 当没有种子时,类随机种子是什么?,c#,.net,random,C#,.net,Random,类Random可以使用a实例化,MSDN说在这种情况下,它是用一些时间相关的值来播种的 推导时间相关值的方法是否记录在任何地方?我可以复制它吗?它没有文档记录,我认为这是故意的。我看不出有什么好的理由来说明这样的事情应该被记录下来,而框架实现者应该能够选择如何确切地做到这一点 但如果您想知道它目前是如何工作的,只需使用ildasm或Reflector。Reflector将为您提供以下内容(.Net 4.5 beta): 如果你看看,你会发现自2003年以来,它做了完全相同的事情。我仍然不明白为什

Random
可以使用a实例化,MSDN说在这种情况下,它是用一些时间相关的值来播种的


推导时间相关值的方法是否记录在任何地方?我可以复制它吗?

它没有文档记录,我认为这是故意的。我看不出有什么好的理由来说明这样的事情应该被记录下来,而框架实现者应该能够选择如何确切地做到这一点

但如果您想知道它目前是如何工作的,只需使用ildasm或Reflector。Reflector将为您提供以下内容(.Net 4.5 beta):


如果你看看,你会发现自2003年以来,它做了完全相同的事情。

我仍然不明白为什么他们使用如此糟糕的种子,并拒绝改进它。因为这(以及其他一些问题)使得以健壮的方式使用
System.Random
变得困难。SO上所有与
随机相关的问题中有很大一部分是由于该设计缺陷造成的,因此它显然是易于修复的常见错误源。就我个人而言,我非常不喜欢
System.Random
,因此我编写了自己的PRNG类来避免这些问题。@CodesInChaos:To使用
System.Random
以一种健壮且可预测的方式,不会随意改变,只需使用您自己的机制来提供种子。不要依赖于可能发生变化的事物,然后抱怨它可能发生变化。(但是,是的,他们现在可能已经选择了不同的方法。)
public Random() : this(Environment.TickCount)
{
}