【发布时间】:2010-12-19 15:15:02
【问题描述】:
我在静态类的静态方法中有以下代码:
Random r = new Random();
int randomNumber = r.Next(1,100);
我有这个循环,我一直得到相同的randomNumber!
这里有什么建议吗?
【问题讨论】:
-
为什么?您可以将种子传递给构造函数。你真的需要重新播种吗?为什么不能用新种子创建一个新种子?
-
我不是在抱怨方法/构造函数的设计,而是人们如何理解它。他们只看到“new Random()”和“r.Next”,并认为它会为他们选择不同的种子,但事实并非如此。
-
schnaader:人们没有问题,因为他们无法重新播种
Random课程。他们真正的问题是他们滥用了它。 -
/同意 Mehrdad。添加种子方法,并在此示例中重新设置种子并不能解决问题。种子是基于时间戳的,并且鉴于此代码在紧密的 for 循环中运行以及现代计算机的速度,它将在同一“时间”重新播种。播种必须进行一次。