使用双精度创建数组的直方图

时间:2017-10-15 08:46:15

标签: java arrays histogram

我有一个包含双打的数组:

double[] myArray = {1.23455, 1.23456, 2.45673, 6.45678, 8.12938}

数组中的数字和数组中的元素数量会有所不同。如何从这个数组中创建直方图?我试图通过这样的方式创建范围:

double sizeOfRange = (max-min)/(numberOfRanges-1);

其中max和min是myArray中的max和min值,但除此之外,我完全失去了关于如何执行此操作的信息。我对java很新,希望问题得到正确解答。

1 个答案:

答案 0 :(得分:1)

我不确定这是你想要的,但如果你是初学者,它当然可以帮助你:

    Double[] myArray = {1.23455, 1.23456, 2.45673, 6.45678, 8.56938, 3.65645, 5.65478, 2.54773, 9.63345};
    int nRanges = 3;
    int[] buckets = new int[nRanges];
    double max = Collections.max(Arrays.asList(myArray));
    double min = Collections.min(Arrays.asList(myArray));
    double sizeOfRange = (max-min)/(nRanges - 1);

    for (double elem : myArray){
        for (int i = 0; i < nRanges; i++){
            if ((elem >= sizeOfRange * i) && (elem < sizeOfRange * (i + 1)))
                buckets[i]++;
        }
    }

    for (int i = 0; i < nRanges; i++){
        System.out.println(sizeOfRange * i + " - " + sizeOfRange * (i + 1) + ": " + buckets[i]);
    }

Collections类提供了许多有用的方法,就像maxmin一样。然后,这段代码的核心是从第8行到第13行:for内部我正在递增可以放置对应的double值的范围的频率。