【问题标题】:Create histogram of array with doubles创建双精度数组的直方图
【发布时间】:2017-10-15 08:46:14
【问题描述】:

我有一个包含双精度的数组:

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

数组中的数字和数组中元素的数量会有所不同。如何从这个数组中创建直方图?我正在尝试通过执行以下操作来创建范围:

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

其中 max 和 min 是 myArray 中的最大值和最小值,但除此之外,我完全不知道如何执行此操作。我对java很陌生,希望问题被正确提出。

【问题讨论】:

  • 直方图是什么??两个轴上的预期是什么?

标签: java arrays histogram


【解决方案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 值可以放置的范围的频率。

【讨论】:

    猜你喜欢
    • 2013-02-18
    • 1970-01-01
    • 2012-01-13
    • 2015-02-10
    • 2019-08-27
    • 1970-01-01
    • 2011-07-07
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多