Hallo, ich befinde mich in meiner Ausbildung zum Fachinformatiker für Anwendungsentwicklung. Da mir durch die vielen Lockdowns Übung in Java fehlt, habe ich mir also eine Zusatzaufgabe besorgt. Grundlegend geht es darum, das Zufallszahlen von 0-100 erzeugt werden. Die Menge davon soll man sich aussuchen können. Das war soweit auch kein Problem. Weiterhin sollen die zufälligen Zahlen sozusagen gezählt werden. Beispiel: Die Zufallszahl ist 45. Dann wird die Anzahl der Ziehung von 45 um eins erhöht. Damit soll halt festgestellt werden ob die Zahlen gleichmäßig zufällig erzeugt werden.
Bei mir scheitert es jetzt aber an dem Zählen.
Mein erster Gedanke war es, mit .contains durch die ArrayListe durchzugehen. Ich dachte auch daran halt über eine Schleife die zahlen zu vergleichen, aber das Problem dabei ist für mich das zählen. Ich kann ja schlecht für jede Zahl eine Variable erstellen, um dort den gezählten Wert reinzuspeichern.
Ich fände also einen Tipp bezüglich der Umsetzung wirklich toll.
Java:
package randomNumber;//Importanweisung für die Random Klasseimportjava.util.Random;importjava.util.Scanner;importjava.util.ArrayList;publicclass mainRandom {publicstaticvoidmain(String[] args){//VariablenintAnzahl;//Arrayliste erstellenArrayList<Integer> genZahlen =newArrayList<Integer>();System.out.println("Wie viele Zufallszahlen sollen generiert werden?");//Scanner erstellen um Eingabe zu erfassenScanner sc =newScanner(System.in);//Eingabe bekommenAnzahl= sc.nextInt();//neues Random Objekt erstelltRandomZufall=newRandom();//Schleife um mehrere Zahlen auszugebenfor(int i =0; i <Anzahl; i++){//Zufallszahl zwischen 0 und 100 werden in ArrayListe gespeichert
genZahlen.add(Zufall.nextInt(6));}System.out.println(genZahlen);}}
Weiterhin kann man erstmal nur zwei Arrays -eins für die Zahlen von 0 bis 49 und eins für 50 bis 99- verwenden. Wenn es hier signifikante Abweichungen von einer Gleichverteilung geben sollte, kann man weiter unterteilen, z.B. von 0-24, 25-49,...
Du könntest ein Map (z.B.: LinkedHashMap) verwenden. Deine erzeugte Zufallszahl ist dann der Key. Zuerst rufst du Integer count = map.get(key) auf. Ist das Resultat null, dann ist der Key noch nicht vorhanden und du fügst ihn ein map.put(key, 1). Ist der Key bereits vorhanden, also das Ergebnis von Integer count = map.get(key) ungleich null, dann erhöhst du den Count und schreibst ihn zurück map.put(key, ++count). Im Anschluss kannst du die gespeicherten Werte ausgeben indem du über die Map iterierst. Es gibt auch eine Methode map.getOrDefault(key, 0);, so kannst du den Quellcode weiter verkürzen.