gpt4 book ai didi

java - 使用 random.nextBoolean() - 随机生成器

转载 作者:行者123 更新时间:2023-12-01 17:22:48 26 4
gpt4 key购买 nike

在下面的示例中,while 循环模拟机械师看到 10 个使用过的引擎。每个引擎都有 50% 的机会工作或不工作。我的变量计数器记录工作引擎的数量,并在程序结束时将其打印出来。

我的问题是这是使用 rgen.nextBoolean() 的正确且最好的方法吗?将 rgen.nextBoolean 放入方法中然后从 while 循环内部调用该方法是否更好?另外,我有点困惑 if(rgen.nextBoolean()) 如何知道它正在评估 n 如果您没有在 if 条件中明确告诉 rgen.nextBoolean() 您将 n 作为值给出?

import acm.program.*;
import acm.util.*;

public class WorkingEngines extends ConsoleProgram{
public void run(){


int n = 0;
int counter = 0;

while (n < 10) {
if (rgen.nextBoolean()){
counter++;
}
n++;
}
println("out of ten random engines you have" + counter + " working properly");
}




private RandomGenerator rgen = RandomGenerator.getInstance();
}

最佳答案

Also, I'm a little confused how if(rgen.nextBoolean()) knows it's evaluating n if you don't specifically tell the rgen.nextBoolean() in the if condition that you're giving it n as a value?

事实并非如此。它不可能知道。那么,到底发生了什么?

随机数生成器有一个内部状态。内部状态会一直保留,直到您向其请求新的随机数为止,此时状态会伪随机更改,并返回与新状态相对应的新随机值。因此,如果您生成具有三个起始状态的三个随机数生成器并要求它们提供 boolean 值,它们将返回不同的 boolean 值序列,但如果您以相同的起始状态生成它们(例如,在以下情况下将 0 的种子传递给所有生成器)构造)它们将永远产生相同的序列。

其他想法:

当用 for 循环更好地表达时,为什么要使用 while n < 10,++n 循环?

调用 nextBoolean 和在方法中调用 nextBoolean 之间有什么区别,除非您计划使该方法子类化并且可重写,例如?

关于java - 使用 random.nextBoolean() - 随机生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17309812/

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