计算上一个循环的平均值-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.");

至于随机数生成器,Bathsheba是正确的。您必须将其移动到for循环之上。只是移动宣言。

您还需要稍微更改for循环。目前,当for循环终止时,它将等于1001。更改如下:

for (int counter = 0; counter < iNum; counter++)

这将确保您的average计算是正确的。

最新更新