4
类Random
可以使用constructor without parameters进行实例化,MSDN表示在这种情况下,它会播种一些时间相关的值。什么是随机种子随种子提供种子?
是否可以在任何地方推导出随时间变化的值?我可以重现吗?
类Random
可以使用constructor without parameters进行实例化,MSDN表示在这种情况下,它会播种一些时间相关的值。什么是随机种子随种子提供种子?
是否可以在任何地方推导出随时间变化的值?我可以重现吗?
它没有记录,我认为这是故意的。我没有看到有什么好的理由说明为什么这样的应该被记录下来,框架实施者应该能够选择如何做到这一点。
但是如果你想知道它目前是如何工作的,只需使用ildasm或Reflector。反光会给你这个(.NET 4.5测试版):
public Random() : this(Environment.TickCount)
{
}
如果你看一下the source code of mono,你会看到,自2003年以来,它完全一样的东西。
我还是不明白*为什么*他们使用如此糟糕的播种,并拒绝改善它。 – CodesInChaos 2012-04-28 16:00:49
为什么这对你很重要? – svick 2012-04-28 16:10:44
因为这个(还有一些问题)使得很难以强大的方式使用'System.Random'。所有关于SO的随机相关问题的重要部分都是由于这个设计缺陷造成的,所以它显然是一个很容易解决的常见错误来源。就我个人而言,我很不喜欢'System.Random',所以我写了自己的PRNG类来避免这些问题。 – CodesInChaos 2012-04-28 16:46:10