next up previous contents
Nächste Seite: Das Pascal'sche Dreieck Aufwärts: Eingabe Vorherige Seite: ``Sternreihen'' ausgeben   Inhalt

Häufigkeitsanalyse

Zunächst sollen eine bestimmte Anzahl (umfang) gauss-verteilte Zufallszahlen ermittelt werden. Anschließend wird die Häufigkeitsverteilung dieser Zahlen ermittelt und am Bildschirm mit entsprechend langen * - Reihen ausgegeben.

import java.io.*;
import java.util.Random;

public class gauss {
    public static void main (String[] args) throws IOException {
        int zahl;
        do {
            BufferedReader zahlenpuffer = new BufferedReader(new InputStreamReader(System.in));
            zahl = Integer.parseInt(zahlenpuffer.readLine());
            if (zahl>0) analyse(zahl);
        } while (zahl > 0);
    }
        
    public static void analyse(int anzahl) {
        int erg[] = new int[21];
        double gausszahl;
        Random r = new Random();

        for (int i=0; i<21; i++) erg[i]=0;

        for (int i = 0; i<anzahl; i++) {
            gausszahl = r.nextGaussian()*2;
            if ((gausszahl <= 10) && (gausszahl) >= (-10)) erg[(int) (gausszahl+10)]++;
        }
        for (int i=0; i<21; i++) ausgabe(i-10, erg[i]);
    }

    public static void ausgabe(int wert, int reihe) {
        System.out.print("   " + wert + ":\t");
        for (int i=0; i<reihe; i++) System.out.print("*");
        System.out.print("\n");
    }
}

Für 300 gewählte Zufallszahlen erhalten wir beispielsweise:

300
   -10:
   -9:
   -8:
   -7:
   -6:  *
   -5:  ******
   -4:  ***************
   -3:  ********************
   -2:  *****************************************
   -1:  ***************************************************************
   0:   **************************************************************
   1:   ********************************************
   2:   *****************************
   3:   **************
   4:   ****
   5:   *
   6:
   7:
   8:
   9:
   10:

Gauss'sche Zufallszahlen sind um den Mittelwert 0 verteilt - und zwar haben die meisten Zahlen einen Wert nahe Null. Symmetrisch dazu fallen die Häufigkeiten nach beiden Seiten sehr stark ab; beispielsweise treten nur mehr sehr wenige Gauss'sche Zufallszahlen mit einem Wert von beispielsweise -3 oder 5 auf. Der Ausdruck gausszahl = r.nextGaussian()*2; verdoppelt die gefundenen Zufallszahlen, sodass der Bereich um 0 herum etwas breiter wird... Liegt eine Zahl zwischen -10 und 10 (was den möglichen Indizes des Zählfeldes erg[] entspricht), so wird das der Größe dieser Zahl entsprechende Zählfeld inkrementiert (dabei muss der Zahlenwert mittels Type-Castings in eine Ganzzahl umgeformt werden). Schließlich werden die Zählergebnisse an Hand entsprechend langer * - Reihen ausgegeben.

Der ``Vergrößerungsfaktor'' (im Beispiel der Faktor 2) könnte auch als Befehlszeilenargument übergeben werden. Beachte, dass einzelne Werte auch außerhalb des Zählintervalles liegen könnten.


next up previous contents
Nächste Seite: Das Pascal'sche Dreieck Aufwärts: Eingabe Vorherige Seite: ``Sternreihen'' ausgeben   Inhalt
Alfred Nussbaumer 2003-02-10