[java] 100 verschiedene zahlen

georg_willi

Cadet 4th Year
Registriert
Juli 2004
Beiträge
110
ich habe mir ein array, dass 100 stellen hat, mit der random funktion zufällig belegen lassen. wie kann ich erreichen, dass jede zahl in dem gewählten bereich nur einmal vorkommt.
 
indem du jedesmal durch das array rennst und das prüfst. ne einfachere möglichkeit gibts meines erachtens nach nicht.
 
Naja, wenn es nur 100 Zahlen sind, dann leg ein zweites Array vom Typ boolean mit ebenfalls 100 Einträgen an und initalisier es mit false. Jedes mal, wenn du eine Zahl ziehst, schaust du einfach, ob der entsprechende Eintrag false ist, wenn ja, setz ihn auf true und übernehm die Zahl, falls er schon true ist, musst du nochmal ziehen.
 
Du kannst auch eine sortierte Folge von zufälligen Zahlen erstellen aus zufälligen Inkrementen >1. Danach würfelst du die Folge ein paar mal durch.

Mal im Pseudocode:
Code:
solange zähler < max. Anzahl
  zahl = letzteZahl + random(50) + 1
  letzteZahl = zahl
  zahl in liste
  ++ zähler


folge durchwürfeln


Vorteil:
Lineare Laufzeit (andere Algorithmen hätten n² oder n log n)
Kein zusätzlicher Speicherbedarf

Nachteil:
Anzahl der benötigten "Durchwürfelungen" ist schwierig auszumachen.
Zahlenmenge ist nicht so "zufällig", als würde jede Zahl einzeln zufällig gewürfelt.
 
Zuletzt bearbeitet:
Du erstellst einfach ne menge in Java (Hashset) und füllst diese mit zufallszahlen bis diese die Grösse 100 hat. Der Vorteil hier ist, das jedes Element nur einmal vorkommt.

Dann gibt es die Funktion to Array, welches ein Array mit den Elementen der Menge liefert.

FERTIG :-P
 
Zurück
Oben