如何在java中平均随机数?

时间:2016-10-07 07:58:57

标签: java random

提前感谢我在java类介绍中的任何帮助,我们的家庭工作是生成1到50之间的10个随机数,然后我得到平均生成的数字。我无法弄清楚如何平均它们就是我所拥有的。有没有办法将每个随机数存储为变量?

public class randomNumberGen
{
     public static void main(String [] args)
     {
         Random r=new Random();

         for (int i=1;i<=10;i++){
             System.out.println(r.nextInt(50));
             System.out.println();
              int average = (i/4);

              System.out.println("your average is"+average);

         }
     }
}

7 个答案:

答案 0 :(得分:3)

使用java 8的流

 final int numberOfRandom = 10;
 final int min = 0;
 final int max = 50;
 final Random random = new Random();

 System.out.println("The ave is: "+random.ints(min, max).limit(numberOfRandom).average());

答案 1 :(得分:2)

首先,您必须更换&#34; r.nextInt(50)&#34; for&#34; r.nextInt(50)+ 1&#34;因为r.nextInt(n)返回0(包括)和n(不包括)之间的数字。然后,您知道平均值只是n值除以n的总和。你能做的就是宣布一个&#34;总计&#34;变量在循环之前初始化为0。在每次迭代中,您将r.nextInt(50)生成的随机值添加到此变量中。在循环之后,您可以将总数除以10,这样您就可以获得平均值。

PS:如果你宣布一个常数,那么不要使用&#34;魔法数字&#34;这是一个很好的做法,所以它会很完美(幸运的是你的老师会计算它)对于迭代次数,然后在循环条件和平均计算中使用它。像这样,如果你必须将其设为100个数字,你只需要将常数值从10改为100而不是将两个10改为两个100。这也让你有机会给这些数字赋予语义价值,因为现在它们将是&#34; AMOUNT_OF_NUMBERS = 10&#34;而不只是&#34; 10&#34;。

答案 2 :(得分:0)

平均值=数字总和/数量

int sum = 0;
for (int i=1;i<=10;i++){
    sum += r.nextInt(50) +1; //nextInt 50 produces value 0 to 49 so you add 1 to get 1 to 50 OR as suggested in the comments sum/10d
}
System.out.println("Average is: " + sum/10) // If you want the result in double (with decimals) just write sum*1.0/10

您也可以使用while循环执行相同操作。

    int i = 0;
    int sum = 0;
    while(i < 10){
        sum += r.nextInt(50) +1;
        i++;
    }
    System.out.println("Average is: " + sum*1.0/i);
使用lambda表达式

甚至更短:(/ java 8 streams)

OptionalDouble average = IntStream.range(1, 10).map(x-> x = r.nextInt(50) +1).average();
System.out.println("Average is "+ average.getAsDouble());

.map(x-> x = r.nextInt(50) +1) // maps (changes) each value from 1 to 10 to a random number between 1 and 50
.average(); // calculates the average.

答案 3 :(得分:0)

与每个平均值一样,sum of elements / amount of elements。所以我们在这里应用它:

import java.util.Random;

public class randomNumberGen
{
    public static void main(String [] args)
    {
        Random r=new Random();
        double sum = 0; // is double so to prevent int division later on
        int amount = 10;
        int upperBound = 50;

        for (int i = 0; i < amount; i++){
            int next = r.nextInt(upperBound) + 1; // creates a random int in [1,50]
            System.out.println(next);

            sum += next; // accumulate sum of all random numbers
        }

        System.out.println("Your average is: " + (sum/amount));
    }
}

答案 4 :(得分:0)

将变量存储在循环外部,以存储生成的总数量以及这些数字的总和。循环完成后,将总和除以总数。

public static void main(String [] args)
{
    Random r=new Random();
    double sum = 0;
    int totalNums;

    for (totalNums=1;totalNums<=10;totalNums++){
        int randomNum = r.nextInt(50);
        sum += randomNum;
        System.out.println(randomNum);
    }

    double average = sum/totalNums;
    System.out.println("your average is: "+average);
}

答案 5 :(得分:-1)

只需创建一个从零开始的变量sum,在每次迭代时递增。在循环之后,简单地除以元素的数量..

答案 6 :(得分:-1)

平均值意味着您应该添加所有内容并将其除以元素数量(50)。

import java.util.Random;
class Homework {
    public static final Random RANDOM = Random(); // never regenerate randoms
    public static void main(String args[]) {
        final int N = 50;
        int sum = 0;
        for (int i = 0; i < N; ++i) {
             sum += RANDOM.nextInt(50)+1;
        }
        System.out.println("Avg: "+ sum / (float) N);
    }
}

这应该可以解决问题。试着从中学习不仅仅是C + P.

Ps:Friggin在手机上编写代码很烦人。