繁体   English   中英

计算上一个循环的平均值-Java

[英]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. 您的平均值以整数算术计算,这意味着任何小数部分都将被丢弃。 考虑对平均值使用浮点类型,并在赋值的右侧加1.0 *强制计算在浮点中进行。

  2. 不得在循环中重新初始化随机数发生器,否则会破坏其统计属性。 进入循环之前,请执行一次。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM