Häufigkeit einzelner Zahlen in einem Array

BS1503

Neues Mitglied
hallo zusammen,


ich habe gerade angefangen Java zu lernen und steh vor folgendes Problem:
Ich möchte gerne wissen, wie oft die einzelnen Zahlen in meinem randomarray (Zahlen 0 bis 100) vorkommen, d.h.

1. Z.b. 2x
2. z.b. 1
3. usw.


folgender Code sollte ich dementsprechend erweitern.


package assigment06;

public class Zufallszahlen {
public static void main(String[] args) {
int[] random = new int [100];
int summe = 0;
int min=101;
int max =0;
for (int i = 0; i<100; i++){
random = (int) ((100+1)*Math.random());


System.out.print(i+":");
System.out.println( random);
summe += random;
if ( random<min)min=random;
if ( random>max)max=random;

}

System.out.println("Summe aller Werte="+summe);
System.out.println("Kleinster Wert="+min);
System.out.println("Grösster Wert="+max);

int länge;
länge= random.length;
double durchschnitt= (double)summe / länge;

System.out.println("Durchschnitt="+ durchschnitt);
}
}


Über eure Hilfe wäre ich sehr dankbar.
 
Du könntest ein Array erstellen das von 0 - max geht. Dann läufst du durch dein gegeben Array mit den Zufallszahlen durch und zählst in deinem erstellten Array einfach in diesem Feld 1 rauf.

Beispiel:
Zufallsarray: a
Int Array bis max: b

a -> 4, 6, 1, 10, 77, 80, 4, 8, 8, ...
mit b läufst du jetzt über das Zufallsarray und an der Stelle a(4) -> b(4)++
Somit stehen später in deinem neuen Array die vorkommenden Zufallszahlen als Count gezählt drin 🙂

Hoffentlich versteht man meinen Ansatz zur Not geht auch Pseudocode doch dann wäre die Aufgabe schon gelöst ;-)

#### Edit:
Hab den Link von M.L. jetzt erst angeschaut dort ist es ja auch beschrieben
 
Du könntest ein Array erstellen das von 0 - max geht. Dann läufst du durch dein gegeben Array mit den Zufallszahlen durch und zählst in deinem erstellten Array einfach in diesem Feld 1 rauf.

Beispiel:
Zufallsarray: a
Int Array bis max: b

a -> 4, 6, 1, 10, 77, 80, 4, 8, 8, ...
mit b läufst du jetzt über das Zufallsarray und an der Stelle a(4) -> b(4)++
Somit stehen später in deinem neuen Array die vorkommenden Zufallszahlen als Count gezählt drin 🙂

Hoffentlich versteht man meinen Ansatz zur Not geht auch Pseudocode doch dann wäre die Aufgabe schon gelöst ;-)

#### Edit:
Hab den Link von M.L. jetzt erst angeschaut dort ist es ja auch beschrieben
Danke, des werde ich mal probieren 🙂 hört sich aber schon mal vielversprechend an 🙂
 
Eine Alternative wäre eine Zählerklasse (nenne ich mal "CounterClass") mit einer Methode increase(), die den darin gespeicherten Wert um 1 erhöht.
Dann noch eine Map
Java:
var counterMap = new LinkedHashMap<Integer, CounterClass>();
und Zugriff mit
Java:
counterMap.computerIfAbsent(intvalue, i -> new CounterClass()).increase();
Vorteil: flexibler was die Werte angeht, funktioniert auch mit negativen Werten. Werte, die nie vorkommen, werden auch nicht gespeichert.
Nachteil: Langsamer, wenn du mit Millionen von Werten hantierst.
 

Zurück
Oben