【发布时间】:2010-05-25 19:51:43
【问题描述】:
我有这个代码:
Random r = new Random();
while (mStack[step].hasNext()) {
int rand = r.nextInt(length);
for (int i = rand; i < length+rand; i++) {
//use of i and rand
}
}
所有这些都在一个递归调用中。
这是否会为每个 while 迭代播种一个新的 Random,对于每个递归调用都不同?
或者我必须使用
while (mStack[step].hasNext()) {
Random r = new Random();
int rand = r.nextInt(length);
for (int i = rand; i < length+rand; i++) {
//use of i and rand
}
}
请指教
【问题讨论】:
-
你检查了 rand 的输出值吗?
-
为什么要为每次通话随机重新播种?这实际上可以导致更少的随机数 - 任何使用 Random 都需要一个种子,因为它只是告诉它在算法/表/等中从哪里开始。除此之外,这些数字将是伪随机的。