gpt4 book ai didi

java - 我应该在循环之前还是循环中创建对象 "Random r"

转载 作者:行者123 更新时间:2023-11-29 04:50:29 25 4
gpt4 key购买 nike

我想知道的是:
我有一个随机对象 r 当前正在 while 循环中创建。
我有 3 个地方可以创建它。

  1. 当 main() 开始时
  2. 在 while() 循环中
  3. 在 for() 循环中

问题是:有什么区别?有任何优点或缺点。
性能有区别吗?随机性是否受影响?

我所知道的是,我不能在循环外使用 r,因为一旦循环终止,它就会停止存在。因此,如果我想将 r 用于任何其他可能需要的东西。 (对吗?)

    import java.util.*;

class test{
public static void main(String[] args) {

int numberOfTrue = 0;
long loopCounter = 0;
int howManyInts = 20;

while(numberOfTrue != howManyInts){
loopCounter += 1;
numberOfTrue = 0;

Random r = new Random();

for(int a = 0; a < howManyInts; a++){
if(r.nextBoolean()){
numberOfTrue += 1;
}else{
break;
}
}
}
System.out.println("It took " + loopCounter + " loops to get " + howManyInts + " random values which are all even.");
}
}

程序会创建“无穷无尽”的随机数,如果它连续创建了 0howManyInts,它就会终止。

EDIT1:按照@Peter Lawrey 的建议稍微更改了代码并进行了更改if(r.nextInt(2) % 2 == 0)if(r.nextBoolean())并且还重命名了一些变量以适应新代码

我喜欢帮助你帮助我,我可以应对强烈的批评。不要退缩。

最佳答案

你绝对应该在循环之外创建它,因为它对于每次迭代都会在内存中分配无用的对象,对于大型数据集,你可能会无缘无故地丢失大量内存。

关于java - 我应该在循环之前还是循环中创建对象 "Random r",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com