Java 随机2个周期,我需要重新初始化吗?

Java 随机2个周期,我需要重新初始化吗?,java,random,Java,Random,我有以下代码: 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 } } Random r=new Random(); while(mStack[step].hasNext()){ int rand

我有以下代码:

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                 
 }
}
Random r=new Random();
while(mStack[step].hasNext()){
int rand=r.nextInt(长度);
对于(int i=rand;i
所有这些都在一个递归调用中实现

这是否会为每个while迭代播种一个新的随机变量,对每个递归调用都不同

或者我必须使用

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                 
 }
}
while(mStack[step].hasNext()){
随机r=新随机();
int rand=r.nextInt(长度);
对于(int i=rand;i

请告知

您需要使用下面的示例。顶部的示例将使用包含方法的每次调用重新初始化。第二个将对堆栈中的每个项执行此操作,这意味着循环中的每个迭代。

您需要使用下面的示例。顶部的示例将使用包含方法的每次调用重新初始化。第二种方法将对堆栈中的每个项执行此操作,这意味着循环中的每个迭代都会执行此操作。

不断地重新设定种子是没有好处的。创建
Random
的单个实例,并将其作为参数在堆栈上传递给递归方法


Java 6中的no arg
Random
构造函数使用实例计数器和当前
System.nanoTime()
值之和作为种子。当然,
nextInt()

不执行重新播种,持续重新播种是没有好处的。创建
Random
的单个实例,并将其作为参数在堆栈上传递给递归方法


Java 6中的no arg
Random
构造函数使用实例计数器和当前
System.nanoTime()
值之和作为种子。当然,
nextInt()

不会执行重新设定种子。您是否检查了rand的输出值?为什么要为每个调用重新设定随机种子?这实际上会导致更少的随机数-使用随机数只需要一个种子,因为这只是告诉它在算法/表/等中从何处开始。除此之外,这些数字将是伪随机的。您是否检查了随机数的输出值?为什么要为每个调用重新设置随机种子?这实际上可以减少随机数-一个种子应该是所有使用随机数所需的,因为这只是告诉它在算法/表/等中从何处开始。除此之外,这些数字将是伪随机的。