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