如何编写代码以在不使用个人创建的方法的情况下找到数组中整数的模式,即仅使用常规的“原始代码”

问题描述 投票:2回答:2

我正在编写代码来查找随机生成的整数数组的均值,中位数和众数(用户输入该数组的大小以及要生成的随机数之间的范围,它会随机生成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???????? 
java arrays mean median mode
2个回答
2
投票

未排序的int数组的查找模式:


0
投票

因为您已经对数组进行了排序以计算中位数,所以找到模式的问题就等同于找到相同数字的最长连续条纹。因此,例如,如果您有[1、2、2、2、3、5、5、5、21],则有三个连续的2,比任何其他运行都长,所以2是模式。

要找到最长的运行时间,您可以再次传递数据,而无需两次读取任何元素。我稍微修改了Litvin and Litvin的代码,以使用您的数组名称,将1的运行次数计为一次运行,并报告模式的编号,而不是模式在数组中的位置。在计算出中位数之后,您可以将这个代码放在您提出问题的位置。

© www.soinside.com 2019 - 2024. All rights reserved.