提前感谢我在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);
}
}
}
答案 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在手机上编写代码很烦人。