循环java中Rnd Num的平均值

循环java中Rnd Num的平均值,java,Java,当我生成3个介于1和20之间的随机整数时,我一直在尝试计算平均值。我必须把平均数四舍五入到整数,然后重复10000次。当我重复测试我的程序2次时,我得到以下输出: Number is :18 Number is :14 Number is :2 sum is: 34 Average is: 11 Number is :13 Number is :3 Number is :6 sum is: 56 Average is: 18 然而,平均值应该是3个数字的平均值。这里,第二个循环将第一个循环的

当我生成3个介于1和20之间的随机整数时,我一直在尝试计算平均值。我必须把平均数四舍五入到整数,然后重复10000次。当我重复测试我的程序2次时,我得到以下输出:

Number is :18
Number is :14
Number is :2
sum is: 34
Average is: 11

Number is :13
Number is :3
Number is :6
sum is: 56
Average is: 18
然而,平均值应该是3个数字的平均值。这里,第二个循环将第一个循环的和与第二个循环的和相加,使得平均值错误(和:34+22=56)。我希望它是22,所以平均值是7。我注意到问题可能是这一行,sum+=n,但是我不知道如何为每个循环添加3个数字来获得平均值

package Histogram;

import java.util.Random;

public class RandomNumbers {
    public static void main(String[] args) {
        final int N = 2;
        Random rand = new Random();
        int n;
        int average;
        int sum = 0;

        for (int a = 0; a < N; a++) {
            for (int i = 0; i < 3; i++) {
                n = rand.nextInt(20) + 1;
                System.out.println("Number is :" + n);
                sum += n;
            }
            average = sum / 3;

        System.out.println("sum is: " + sum);
        System.out.println("Average is: " + average);

        }

    }
}
package直方图;
导入java.util.Random;
公共类随机数{
公共静态void main(字符串[]args){
最终整数N=2;
Random rand=新的Random();
int n;
整数平均;
整数和=0;
对于(int a=0;a
如果您想要总的总和,我建议添加第二个
iterationSum
变量,将3个数字相加。比如:

for (int a = 0; a < N; a++) {
    int iterationSum = 0;
    for (int i = 0; i < 3; i++) {
        ...
        iterationSum += n;
    }
    average = iterationSum / 3;
    ...
}
for(int a=0;a
如果您不关心总和,只需在每次迭代中将总和重置为0即可:

for (int a = 0; a < N; a++) {
    sum = 0;
    ...
}
for(int a=0;a
如果您想要总的总和,我建议添加第二个
iterationSum
变量,将3个数字相加。比如:

for (int a = 0; a < N; a++) {
    int iterationSum = 0;
    for (int i = 0; i < 3; i++) {
        ...
        iterationSum += n;
    }
    average = iterationSum / 3;
    ...
}
for(int a=0;a
如果您不关心总和,只需在每次迭代中将总和重置为0即可:

for (int a = 0; a < N; a++) {
    sum = 0;
    ...
}
for(int a=0;a
平均值应该是3个数字的平均值。这里,这个 第二个循环将第一个循环的和与第二个循环的和相加 使平均值错误(总和:34+22=56)。我希望它是22所以 平均为7

一种方法是在将
sum
average
打印到控制台后重置
sum
的值

示例:

int n;
int average;
int sum = 0;

for (int a = 0; a < N; a++) {
    for (int i = 0; i < 3; i++) {
        n = rand.nextInt(20) + 1;
        System.out.println("Number is :" + n);
        sum += n;
    }
    average = sum / 3;

    System.out.println("sum is: " + sum);
    System.out.println("Average is: " + average);
    sum = 0;
}
int n;
int average = 0;
for (int a = 0; a < N; a++) {
     int sum = 0;
     for (int i = 0; i < 3; i++) {
        n = rand.nextInt(20) + 1;
        System.out.println("Number is :" + n);
        sum += n;
    }
    average = sum / 3;

    System.out.println("sum is: " + sum);
    System.out.println("Average is: " + average);
}
平均值应该是3个数字的平均值。这里,这个 第二个循环将第一个循环的和与第二个循环的和相加 使平均值错误(总和:34+22=56)。我希望它是22所以 平均为7

一种方法是在将
sum
average
打印到控制台后重置
sum
的值

示例:

int n;
int average;
int sum = 0;

for (int a = 0; a < N; a++) {
    for (int i = 0; i < 3; i++) {
        n = rand.nextInt(20) + 1;
        System.out.println("Number is :" + n);
        sum += n;
    }
    average = sum / 3;

    System.out.println("sum is: " + sum);
    System.out.println("Average is: " + average);
    sum = 0;
}
int n;
int average = 0;
for (int a = 0; a < N; a++) {
     int sum = 0;
     for (int i = 0; i < 3; i++) {
        n = rand.nextInt(20) + 1;
        System.out.println("Number is :" + n);
        sum += n;
    }
    average = sum / 3;

    System.out.println("sum is: " + sum);
    System.out.println("Average is: " + average);
}

你的
sum+=nfor
循环中的code>不断增加
sum
的值(甚至循环中较旧的sum值)。因此,每次在开始第一个循环时,都需要将
sum
的值重置为0

for (int a = 0; a < N; a++) {
   sum = 0;
   //rest of the code
for(int a=0;a
您的
sum+=n;
在第二个
for
循环中,不断增加
sum
的值(即使是循环中较旧的总和值)。因此,每次开始第一个循环时,您都需要将
sum
的值重置为0

for (int a = 0; a < N; a++) {
   sum = 0;
   //rest of the code
for(int a=0;a
公共静态void main(字符串[]args){
最终整数N=2;
Random rand=新的Random();
int n;
整数平均;
整数和=0;
对于(int a=0;a
公共静态void main(字符串[]args){
最终整数N=2;
Random rand=新的Random();
int n;
整数平均;
整数和=0;
对于(int a=0;a
必须在第一个循环后清除
sum
变量:

//..
int sum;

for (int a = 0; a < N; a++) {
    sum = 0; // -------> Here it is necessary to be clean for the next iteration
    for (int i = 0; i < 3; i++) {
        n = rand.nextInt(20) + 1;
        System.out.println("Number is :" + n);
        sum += n;
    }
//...
}
/。。
整数和;
对于(int a=0;a在这里,下一次迭代必须保持干净
对于(int i=0;i<3;i++){
n=兰特·耐克斯汀(20)+1;
System.out.println(“编号为:+n”);
总和+=n;
}
//...
}

必须在第一个循环后清除
sum
变量:

//..
int sum;

for (int a = 0; a < N; a++) {
    sum = 0; // -------> Here it is necessary to be clean for the next iteration
    for (int i = 0; i < 3; i++) {
        n = rand.nextInt(20) + 1;
        System.out.println("Number is :" + n);
        sum += n;
    }
//...
}
/。。
整数和;
对于(int a=0;a在这里,下一次迭代必须保持干净
对于(int i=0;i<3;i++){
n=兰特·耐克斯汀(20)+1;
System.out.println(“编号为:+n”);
总和+=n;
}
//...
}

计算平均值后,您可以将
sum
重置为0。您必须确保在正确的位置将
sum
初始化为0。事实上,您甚至不应该在外循环外声明n、sum和average。n应该在内循环内声明,sum和average应该在外循环内声明。下一步是第二步是提取内部循环的主体,计算平均值,并将其放入自己的方法中。始终保持变量的范围尽可能窄