当前位置: 首页 > 知识库问答 >
问题:

循环java中Rnd Num的平均值

祁远
2023-03-14

当我生成3个介于1和20之间的随机整数时,我一直在尝试计算平均值。我必须将平均值四舍五入到int,然后重复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);

        }

    }
}

共有3个答案

施玉宸
2023-03-14

平均值应该是3个数字的平均值。这里,第二个循环将第一个循环的和与第二个循环的和相加,使得平均值错误(和:34 22=56)。我希望它是22,所以平均值是7

一种方法是在将sum平均值打印到控制台后重置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;
}

或者,为了简化操作,您可以将变量sum设置为循环中的局部变量,以便在每次迭代时,sum的值将重置为默认值:

例子:

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);
}
贡俊
2023-03-14

必须在第一个循环后清除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;
    }
//...
}
越胤
2023-03-14

您的sum=n;在第二个for循环中不断增加sum的值(甚至是循环中较旧的和值)。因此,您需要在第一个循环开始时每次将sum的值重置为0。

for (int a = 0; a < N; a++) {
   sum = 0;
   //rest of the code
 类似资料:
  • 正如标题所示,我需要做的是使用for循环计算数组的平均值。我所说的平均值是指

  • 我需要使用流创建两个方法。返回每个任务平均分数的方法。 以及一种返回平均得分最高的任务的方法。 我只能修改这两种方法。 这是CourseResult课程 以及创建CourseResult对象的方法。 基于这些方法,我可以通过将该任务的分数之和除以3来计算每个任务的平均值,因为只有3个人可以让它除以一个等于流中CourseResult对象数量的数字,如果这些方法改变了它们的. limited(3)。

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 问题内容: 编写一个称为平均值的类,该类可用于计算多个整数的平均值。它应包含以下方法: 接受两个整数参数并返回其平均值的方法。 接受三个整数参数并返回其平均值的方法。 接受两个表示范围的整数参数的方法。 发出错误消息,如果第二个参数小于第一个参数,则返回零。否则,该方法应返回该范围内(含)的整数平均值。实现该类并编写程序以测试其方法并提交源代码(.java文件)。 我被困在第三部分,我什至不真正理

  • 问题内容: 我正在读一本书,重新整理了我的数据结构,它提出的一个问题是不使用“第一个”和“最后一个”指针来构建一个循环的单链表,而是通过使用一个引用来访问它。当前”。我不确定我是否理解这个问题,我一直以为我至少需要第一个或最后一个。这是我的实现,但是它具有“ first”,不确定如何解决。您能否评论一下如何调整代码以消除对第一代码的依赖? 然后是列表本身: 问题答案: 如果您有一个循环链表,则每个