我有一个包含双打的数组:
double[] myArray = {1.23455, 1.23456, 2.45673, 6.45678, 8.12938}
数组中的数字和数组中的元素数量会有所不同。如何从这个数组中创建直方图?我试图通过这样的方式创建范围:
double sizeOfRange = (max-min)/(numberOfRanges-1);
其中max和min是myArray中的max和min值,但除此之外,我完全失去了关于如何执行此操作的信息。我对java很新,希望问题得到正确解答。
答案 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
类提供了许多有用的方法,就像max
和min
一样。然后,这段代码的核心是从第8行到第13行:for
内部我正在递增可以放置对应的double
值的范围的频率。