2017-03-27 3 views
-1

Ich habe Probleme, den Prozentsatz der Frequenz zu erhalten. Unten ist die Frage:Wie erstelle ich den Prozentsatz, sobald ich die Summe und Häufigkeit einer Zahl habe?

Schreiben Sie ein Programm, um das Rollen von zwei Würfeln zu simulieren. Das Programm sollte einmal ein Objekt der Klasse Random verwenden, um den ersten Würfel zu würfeln und erneut den zweiten Würfel zu würfeln. Die Summe der zwei Werte sollte dann berechnet werden. Jeder Würfel kann einen ganzzahligen Wert von 1 bis 6 aufweisen, so dass die Summe der Werte von 2 bis 12 variiert, wobei 7 die häufigste Summe und 2 und 12 die am wenigsten häufigen Summen sind. Ihre Bewerbung sollte 36.000 mal würfeln. Verwenden Sie ein eindimensionales Array, um zu verfolgen, wie oft jede mögliche Summe angezeigt wird. Zeigen Sie die Ergebnisse in Tabellenform an. Bestimmen Sie, ob die Summen sinnvoll sind (z. B. hier sechs Möglichkeiten, eine 7 zu rollen, also sollte etwa ein Sechstel der Rollen 7 sein). Beispielausgabe:

Sum   Frequency  Percentage 
  2        1027        2.85 
  3        2030        5.64 
  4        2931        8.14 
  5        3984       11.07 
  6        5035       13.99 
  7        5996       16.66 
  8        4992       13.87 
  9        4047       11.24 
 10        2961        8.23 
 11        1984        5.51 
 12        1013        2.81 

Das ist mein Code so weit ist:

import java.security.SecureRandom; 

public class DiceSum { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     SecureRandom random = new SecureRandom(); 

     int dice1, dice2; 
     int [] frequency = new int [13]; 
     int [] rolls = new int [13]; 
     int sum; 
     int percentage; 

     for (int i = 0; i <= 36000; i++) { // runs 36000 times 

      dice1 = random.nextInt(6)+1; // generates a random number 
      dice2 = random.nextInt(6)+1; 

      frequency[dice1+dice2]++; 

      sum = dice1 + dice2; // creates the sum of dice 1 and dice 2 

     } 

     System.out.printf("Sum\tFrequency\tPercentage\n"); 

     for (int i = 2; i < frequency.length; i++) { 

      percentage = (frequency * 100.0) \ 36000; //This is the line 

      System.out.printf("%d\t%d\t\n",i,frequency[i]); 

     } // end of for loop 

    } // end of main 

} // end of class 
+0

Für die Division sollten Sie verwenden/nicht \ ... Dann müssen Sie darauf achten, durch 36000 zu teilen es wird es als int behandeln, vielleicht besser schreiben Sie es als 36000.0. – michaeak

Antwort

0

Ich schlage vor, die Linie

percentage = (frequency * 100.0) \ 36000; 

zu

percentage = (((double)frequency[i]) * 100.0)/36000.0; 

Frequenz zu ändern [i] wird das ith-Element nehmen von der Frequenz.

Verwandte Themen