我正在编写代码来查找随机生成的整数数组的均值,中位数和众数(用户输入该数组的大小以及要生成的随机数之间的范围,它会随机生成3-22之间的数字。对于平均值或中位数,我编写代码没有太多麻烦,但是我似乎无法编写代码来计算模式(最常见的数字)。任何人都可以帮忙或显示/提交有关如何计算模式的代码随机生成的int数组,而无需在代码中为自己创建一个方法吗?谢谢。这就是我到目前为止(找到均值和中位数的代码):
public class ArraysIntsMeanMedianAndMode {
public static void main(String[] args) {
int ArraySize;
int min;
int max;
double x;
// To get the Size and range of numbers for the randomly genereated ints in the array.
Scanner sc = new Scanner(System.in);
System.out.println("What size should the array be?");
ArraySize = sc.nextInt();
System.out.println("Please enter a minimum value for the range of ints.");
min = sc.nextInt();
System.out.println("Please enter a maximum value for the range of ints.");
max = sc.nextInt();
//Making the array and filling it based on the user inputs
int[] MMMarray = new int[ArraySize];
int total = 0;
for (int i = 0; i < ArraySize; i++) {
x = (int) (Math.random() * ((max - min) + 1)) + min;
System.out.println(x);
int RandoNums = (int) x;
total = total + RandoNums;
MMMarray[i] = RandoNums;
}
//Finding mean/average
double Mean = (total + 0.0) / ArraySize;
System.out.println("The mean is: " + Mean);
//Finding Median/Middle number
Arrays.sort(MMMarray);
System.out.println(Arrays.toString(MMMarray));
if (ArraySize % 2 == 0) {
System.out.println("The median is: " + ((MMMarray[(ArraySize / 2)] + 0.0) + MMMarray[(ArraySize / 2) - 1]) / 2 + ".");
} else System.out.println("The median is: " + MMMarray[ArraySize / 2] + ".");
//How to find mode????????
未排序的int数组的查找模式:
因为您已经对数组进行了排序以计算中位数,所以找到模式的问题就等同于找到相同数字的最长连续条纹。因此,例如,如果您有[1、2、2、2、3、5、5、5、21],则有三个连续的2,比任何其他运行都长,所以2是模式。
要找到最长的运行时间,您可以再次传递数据,而无需两次读取任何元素。我稍微修改了Litvin and Litvin的代码,以使用您的数组名称,将1的运行次数计为一次运行,并报告模式的编号,而不是模式在数组中的位置。在计算出中位数之后,您可以将这个代码放在您提出问题的位置。