2017-10-15 65 views
0

阵列的直方图我有一个阵列,其包括双:在阵列中创建双打

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

的数量和在数组元素会有所不同的数量。我如何从这个数组中创建一个直方图?我试图做这样的事情来创建范围:

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

其中最大值和最小值都在myarray的最大值和最小值,但除此之外,我对于如何做到这一点完全丧失。我对java很陌生,希望问题能够正确的提出。

+0

直方图是什么?双方都期待什么? – 2017-10-15 08:50:12

回答

0

我不知道这是你想要的东西,但它肯定能帮助你,如果你是首发:

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里面,我正在增加可以放置对应的值的范围的频率。