Java Zufallszahlen ohne Zurücklegen?

Für ein Teil eines größeren Projekts muss in in Java eine bestimmte Menge an Zufallszahlen erstellen, wobei sich keine doppeln darf.

Zuerst erstelle ich das neue Objekt "zufallszahl" der Klasse "Random".

In der äußeren For-Schleife wird dann für den Index "a" des Arrays "zufallsPosition[]" eine Zufallszahl erzeugt.

Die innere For-Schleife startet ebenfalls beim Anfangswert und läuft solange die Zählvariable "b" kleiner als die Summe aus dem aktuellen "a" und dem Startwert ist. Somit werden alle Indizes durchlaufen, die durch die vorherigen Durchgänge der äußeren For-Schleife schon eine Zufallszahl besitzen.

In der While Schleife wird dann geschaut, ob der Wert des Index "a" (also der oben erzeugten Zufallszahl) dem jeweiligen Wert des Index "b", also den vorherigen Zufallszahlen entspricht. Ist dies der Fall, bekommt das Array an der Stelle "a" eine neue Zufallszahl zugewiesen. Dies passiert (zumindest theoretisch) solange die aktuelle Zufallszahl "a" der aus der inneren For-Schleife "b" entspircht.

Es würde also bedeuten, dass er immer eine neue Zufallszahl erstellt, wenn diese schon im Array vorhanden ist.

Leider funktioniert das nicht und ich weiß selbst nach längerem Überlegen nicht warum :-(

Dann habe ich mal testweise das "==" in der While-Schleife durch ein "!=" ersetzt, d.h. es wird immer eine neue Zufallszahl erstellt bis sie der vorherigen entspricht, was überraschender Weise funktioniert (beispielsweise haben dann alle Indizes den Wert 4).

Code:

"==" in der While Schleife (so, wie es im Code steht)

"!=" in der While Schleife, funktioniert wie gewünscht.

Vielen Dank für Eure Hilfe!

Bild zum Beitrag
Computer, programmieren, Java, Informatik

Meistgelesene Beiträge zum Thema Computer