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));
}