2012-03-16 25 views
0

的陣列我試圖使這個程序找到一個隨機生成的10個號碼

public class Statistics { 

    public static void main(String[] args) { 
     final int SIZE = 10; 
     int sum =0; 

     int[] numArray= new int [SIZE]; 

     for (int c=0; c < SIZE; c++) 
     { 
      numArray[c]=(int)(Math.random()*6+1); 
      System.out.print(numArray[c]+ " "); 

      sum+=numArray[c]; 
     } 

     System.out.println("\nSum of all numbers is " + sum); 
     System.out.println("\n Mean of numbers is " + (sum)/5); 
    } 
} 

計算隨機生成的陣列的模式的模式。

我見過發佈源代碼的地方,他們使用一個單獨的方法稱爲computemode,但我不知道在哪裏把第二個方法放在我的代碼中。對不起,在編程方面我非常非常環保。我被教授Java作爲第一語言,到目前爲止它是壓倒性的。

如果有人可以發佈詳細的說明/解釋語法,我會很感激。

+0

一個數組可以有多個模式。你需要報告數組中有最大頻率的所有值還是隻有一個?你需要報告地點嗎? – 2012-03-16 21:06:42

回答

0

該模式非常容易計算。的一種方式,假設你的輸入是有界的,是簡單地具有跟蹤每個號碼的出現次數的數組:

int[] data; //your data bounded by 0 and MAX_VALUE 
int[] occurrences = new int[MAX_VALUE+1]; 

for (int datum : data) { 
    occurrences[newNumber]++; 
} 

然後找出具有最高值出現在該索引(ES)。

int maxOccurrences = Integer.MIN_VALUE; 
int mode = -1; 

for (int i = 0; i < occurrences.length; i++) { 
    if (occurrences[i] > maxOccurrences) { 
     maxOccurrences = occurrences[i]; 
     mode = i; 
    } 
} 

你將不得不調整這個來處理多種模式。

+0

您可以將'maxOccurences'設置爲'0',因爲沒有任何事情可能發生負數次。 – Jon 2012-03-16 21:11:23