附件是问题:http://puu.sh/42QtI/ea955e5bef.png
就代码而言,这是我目前所拥有的
这个问题要求“计算三条尾巴的模拟百分比”,这是我坚持的部分。有人能给我一些关于接下来会取得什么进展的见解吗?
public static boolean isThreeTails(){
Random rand = new Random();
int numberOfTosses = 3;
int numberOfHeads = 0;
int numberOfTails = 0;
for(int i = 1; i <= numberOfTosses; i++){
int value = rand.nextInt(2);
if(value == 0){
numberOfTails++;
}else{
numberOfHeads++;
}
}
if(numberOfTails == 3){
return true;
}
else{
return false;
}
}
double numTosses = 1000000; //choose whatever here
double threeTails = 0;
for(int i =0; i < numTosses; i++){
if(isThreeTails()){
threeTails++;
}
}
System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8);
System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses);
编辑:在这里,我正在为三尾巴创建一个计数器。它会增加numberOfTripleTails
计数器。如果它滚动“H”,则numberOfTails
将简单地返回到零。但是,我的代码似乎只给出'3'作为答案。
编辑2:完成!
答案 0 :(得分:2)
好吧 - 您已经运行了模拟,并且您拥有头部数量和尾巴数量的价值。现在你需要再运行一些。
每次运行模拟时,都会增加一个跟踪运行它的总次数的变量。如果尾部的数量为3,则增加另一个变量:让它称之为成功。
问题的结果是模拟运行总次数的成功。
答案 1 :(得分:1)
问题在于,“理论上,你应该在1/8的时间内得到3个尾巴”。现在它说,“好的,你知道这个理论,现在实际上是在计算机上做这个,看看你真正得到了什么。”
您要做的是多次运行此代码并跟踪您有3个尾巴的次数。取该数字并除以运行代码的总次数。这应该是模拟的百分比。
万一你不能说,我是说要在代码中执行此操作,而不是一遍又一遍地手动运行当前代码。这是一些伪代码:
threeTailsCount = 0
for i = 0; i < 1000; i++
if currentCodeReturns3Tails
threeTailsCount += 1;
print (threeTailsCount / 1000)
答案 2 :(得分:1)
您已编写的方法模拟三次投掷。我修改了该方法,使其现在成为可调用函数isThreeTails()
public static boolean isThreeTails(){
Random rand = new Random();
int numberOfTosses = 3;
int numberOfHeads = 0;
int numberOfTails = 0;
for(int i = 1; i <= numberOfTosses; i++){
int value = rand.nextInt(2);
if(value == 0){
numberOfTails++;
}else{
numberOfHeads++;
}
}
if(numberOfTails == 3){
return true;
}
else{
return false;
}
}
现在,您需要从ThreeTosses.java
double numTosses = 100; //choose whatever here
double threeTails = 0;
for(int i =0; i < numTosses; i++){
if(isThreeTails()){
threeTails++;
}
}
System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8);
System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses);