Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在循环中使用随机参数时';在限定比较中,它是调用随机化函数一次还是每次循环运行时调用随机化函数?_Java_Loops_For Loop_Random_Compare - Fatal编程技术网

Java 在循环中使用随机参数时';在限定比较中,它是调用随机化函数一次还是每次循环运行时调用随机化函数?

Java 在循环中使用随机参数时';在限定比较中,它是调用随机化函数一次还是每次循环运行时调用随机化函数?,java,loops,for-loop,random,compare,Java,Loops,For Loop,Random,Compare,根据问题,假设您有以下代码: Random rand = new Random(); for (int k = 0; k < rand.nextInt(10); k++) { //Do stuff here } Random rand=new Random(); 对于(int k=0;k 循环-C++、C、C、和目标C.< /P> 中,至少有四种语言是相同的。 答案是在循环的每次迭代中都会对其进行比较,这样就更有可能出现更低的数字 在其他语言中可能

根据问题,假设您有以下代码:

    Random rand = new Random();
    for (int k = 0; k < rand.nextInt(10); k++) {
        //Do stuff here
    }
Random rand=new Random();
对于(int k=0;k
当循环开始运行时,
k
是否仅与
rand.nextInt(10)
进行一次比较,以便循环在0和9之间的每个间隔运行的几率相等?或者它是否会在循环的每次迭代中进行比较,从而使出现的次数更少

此外,不同语言之间是否存在差异?我的例子是针对Java的,但是大多数语言之间是否存在一个标准

当循环开始运行时,k是否只与rand.nextInt(10)进行一次比较

否,
k
与每次检查循环继续条件时,
rand
生成的下一个随机数进行比较

如果希望生成一次随机数,请定义一个变量,并在循环之前将其设置为
nextInt(10)
。您还可以使用倒计时的替代方案:

for (int k = rand.nextInt(10); k >= 0 ; k--) {
    //Do stuff here
}

在使用< <代码>的语法> <代码>循环-C++、C、C、和目标C.< /P>

中,至少有四种语言是相同的。 答案是在循环的每次迭代中都会对其进行比较,这样就更有可能出现更低的数字

在其他语言中可能会有所不同。即使今天不行,明天也有可能。如果你想知道,你应该测试一下

编辑

例如,在Java8中,您可以编写

import static java.util.stream.IntStream.rangeClosed;
// ...

public static void main(String[] args) {
  Random rand = new Random();
  rangeClosed(1,1+rand.nextInt(10)).forEach(n -> System.out.println(n));
}

正是我想要的,谢谢!另外,反向计数循环非常聪明,我很欣赏这个技巧。这是一个很好的观点,测试它似乎是新语言/替代语言的一个很好的选择。@Kyton编辑。我想到了一个Java8示例。
testIt()
0
testIt()
1
testIt()
import static java.util.stream.IntStream.rangeClosed;
// ...

public static void main(String[] args) {
  Random rand = new Random();
  rangeClosed(1,1+rand.nextInt(10)).forEach(n -> System.out.println(n));
}