[英]Calculate Average of Previous Loop - Java
因此,我正在为AP计算机科学课程编写此代码,但遇到了一个问题。
首先,这是我的代码:
//loop counters
int counterOne = 0;
int counterElse = 0;
int loop = 1;
int iNum = 1000;
//create file
PrintWriter outFile = new PrintWriter(new File("newFile.txt"));
for (int counter = 1; counter <= iNum; counter++)
{
while (loop >= 1)
{
Random rand = new Random();
int iRand = rand.nextInt(5)+1;
if (iRand != 1)
{
counterElse++;
loop++;
}//end of if of if-else
else
{
counterOne++;
loop = 0;
}//end of else of if-else
}//end of while loop
int tries = counterElse+counterOne;
//int average = (tries + prevTriesSum) / counter
System.out.println("It took " + tries + " try/tries to win!");
//outFile.println("It tool an average of " + average + " tries to win.");
}//end of for loop
如何计算试验的平均值? 从代码末尾可以看到,我注释了一条我想计算平均值的行。 这是因为我不知道如何计算prevTriesSum,它代表所有其他试验的总和。 举个例子:假设循环运行了六次,第一次运行需要3次尝试,第二次运行5次,第三次运行7次,第四次运行11次,第五次运行2次,第六次运行4次(最近一次尝试,现在尝试= 4)。
我希望prevTriesSum等于3 + 5 + 7 + 11 + 2 + 4。
我如何获得程序进行计算?
您的平均值以整数算术计算,这意味着任何小数部分都将被丢弃。 考虑对平均值使用浮点类型,并在赋值的右侧加1.0 *
强制计算在浮点中进行。
您不得在循环中重新初始化随机数发生器,否则会破坏其统计属性。 进入循环之前,请执行一次。
在while
循环之前,添加
int prevTriesSum = 0;
将注释的int average =
行替换为
prevTriesSum += tries;
在for
循环之后添加
double average = (prevTriesSum + 0.0) / counter;
outFile.println("It tool an average of " + average + " tries to win.");
至于随机数发生器,拔示巴是正确的。 您必须将其移至for
循环上方。 只需移动声明即可。
您还需要稍微更改for
循环。 就目前而言,当for
循环终止时,它等于1001。 进行如下更改:
for (int counter = 0; counter < iNum; counter++)
这将确保您的average
计算是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.