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)
{
}