Zufallsliste ohne Wiederholungen erstellen

Status
Nicht offen für weitere Antworten.

ryoshi

Mitglied
Hallo an die alt eingessenen Javaprogrammierer :)

Nachdem ich schon überall danach gesucht habe, aber irgendwie aus keinem Suchergebnis schlau geworden bin wollt ich einfach hier mal nachfragen.

Ich habe versucht eine Zahlenliste zu erstellen in dem 25 Zufallszahlen untereinander aufgereiht sind. Dies ist im Prinzip auch nicht sehr schwierig, doch sollte keine Zahl zwei Mal vorkommen. Diese Wiederholungen bekomm ich einfach nicht weg.

Vielleicht kann ja jemand einfach die nötige Ergänzung zu meinem Code posten, die nötig ist um dieses Problem zu beheben, oder vielleicht hat jemand ja auch einen eleganteren Lösungsweg.

Code:
import java.util.Random;

public class Zufallsliste 
{
    public void zufallsZahlenAusgeben() 
        {

        Random zufallsgenerator;
        zufallsgenerator = new Random();

        for(int i=1; i<=25; i++)
            {
            int index = zufallsgenerator.nextInt(25);
            System.out.println(index);
            }
        }
}

Wäre euch sehr dankbar :)

Gruß ryoshi
 

SebiB90

Top Contributor
damit du keine wiederholungen kriegst musst du zuerst die zufallszahlen speichern,z.b. in einem array und dann nachgucken ob die zahl vorhanden ist.


Code:
import java.util.Random; 

public class Zufallsliste 
{ 
    public void zufallsZahlenAusgeben() 
        { 

        Random zufallsgenerator; 
        zufallsgenerator = new Random(); 
        int[] zufallszahlen = new int[25];//array fürdie zufallszahlen

        for(int i=0; i<25; i++) 
            { 
            boolean doppelt = false; //hilfsvariable ob zahl doppelt ist
            do {
              int index = zufallsgenerator.nextInt(25); 
              //array durchlaufen und prüfen ob zahl schon vorhanden ist
              for(int j = 0; j < i; j++) {
                if(zufallszahlen[j] == index) {
                  doppelt = true;//zahl ist vorhanden, hilfsvariable auf true setzen
                  break; //schleife abbrechen
                }
              }
            }while(doppelt);//wenn zahl doppelt ist nochmal neue zufallszahl generieren bis nicht mehr doppelt ist
            System.out.println(index); 
            zufallszahlen[i] = index;//zahl ins array abspeichern
            } 
        } 
}
 

ryoshi

Mitglied
erstmal danke für die schnelle antwort :)

ich hab das ganze mal compilieren lassen und hab dann die variable "index" schonma vordeklariert, weil sie sonst in der while schleife unten nicht erkannt wird. beim ausführen jedoch hängt sich das ganze auf und zwar nach 10 zahlen bzw. er gibt nur 10 zahlen aus und arbeitet dann weiter... hab das ganze mit BlueJ probiert.
 

SebiB90

Top Contributor
ahjo -.-
index muss vorher deklariert werden

hm.. es könnte sein das nach 10 zahlen nur doppelte kommen aber das kann nicht wirklich sein
schau dir mal arraylist an, da könntest du einfach die zahlen 1 bis 25 hinzufügen und dann per Collections.shuffle(list) mischen, dann haste auch ne zufällige reihenfolge
 

Redfrettchen

Bekanntes Mitglied
Hi,
die oben vorgestellte Methode eine beliebige Kombination von Zahlen zu erhalten ist nicht gerade die eleganteste.
Entweder man geht den Umweg über die Collection oder man programmiert das selbst aus:
Die Idee dahinter ist, dass man sich alle vorkommenden Zahlen als Zahlenarray vorgibt und bloß die Positionen zufällig vertauscht.
Code:
int[] arr = new int[25];
for (int i=0; i<arr.length; i++) {
    arr[i] = i;
}
Random gen = new Random();
int pos;
int hilf;
for (int i=0; i<arr.length; i++) {
    pos = gen.nextInt(arr.length-i)+i;

    hilf = arr[i];
    arr[i] = arr[pos];
    arr[pos] = hilf;
}

Das geht natürlich auch mit beliebigen Objektarrays.
 

ryoshi

Mitglied
jo ich habs jetzt mit dem shuffle gemacht und das funktioniert auch sehr gut :)
nur ergibt sich jetzt das problem das ich die ArrayList irgendwie nicht per knopfdruck in ein textfeld mit AWT schreiben kann... ich hab dann versucht das ganze in einen string zu konverten aber das scheitert :/
 

SebiB90

Top Contributor
ryoshi hat gesagt.:
jo ich habs jetzt mit dem shuffle gemacht und das funktioniert auch sehr gut :)
nur ergibt sich jetzt das problem das ich die ArrayList irgendwie nicht per knopfdruck in ein textfeld mit AWT schreiben kann... ich hab dann versucht das ganze in einen string zu konverten aber das scheitert :/
wo haste denn probleme, zeig mal bischen code.
eigentlich ist das ganz einfach, mit einer for(each) schleife die liste durchlaufen und dann mit nem StringBuffer den String zusammen basteln.
 

ryoshi

Mitglied
jo also das ganze soll auf knopfdruck (mouse_clicked) geschehen..

Code:
    ArrayList a = new ArrayList();

    for ( int i = 1; i <= 25; i++ )
      a.add( "" + i );

    Collections.shuffle(a);
er erstellt also auf knopfdruck eine ArrayList und soll die dann mit hilfe von textFeld.setText(String); in das textfeld schreiben und das klappt nicht.. weil er angeblich keine ArrayList in ein AWT Textfeld schreiben kann :/
der rest mit der ArrayList funktioniert super & mit System.out.println ist das Ausgeben auch kein Problem
 

Redfrettchen

Bekanntes Mitglied
Warum sollte er auch eine ArrayList in ein Textfeld schreiben? Stell dir vor jemand füllt eine ArrayList mit hochkomplizierten Objekten, was soll das Textfeld mit denen machen? Die Methode setText(String) nimmt eben nur einen String an, kein StringBuffer, keine ArrayList<String> oder was auch immer. Du musst aus dem Inhalt deiner Collection also in einen String bringen, eben auf dem Weg, den SebiB90 schon angedeutet hat. Wie du auf die Element der ArrayList zugreifst, hast du ja anscheinend schon rausgefunden, du musst also bloß noch in Erfahrung bringen, wie man die einzelnen Elemente in einen String verknüpft.
Fürs erste kannst du es ja auch mit dem +-Operator von String machen, was allerdings nicht so performant ist, weil intern ein komplett neuer String erzeugt wird.

Ich hoffe das waren jetzt genug Hinweise ;-)
 

ryoshi

Mitglied
wie ich eben herausgefunden habe geht das alles doch viel einfach als ich gedacht habe ;)
Code:
    ArrayList a = new ArrayList();

    String s = tFMannschaften.getText();
    int anzahl = Integer.parseInt( s );

    for ( int i = 1; i <= anzahl; i++ )
    a.add( "" + i );

    Collections.shuffle(a);
    textAusgabe.setText(a.toString());
so habe ich eine variable anzahl und bekomme es auch in mein textfeld
ich bedanke mich trotzdem bei euch beiden für eure hilfe :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Methoden Ausgabe aller Attribute einer Instanz ohne einzelne Methode Java Basics - Anfänger-Themen 3
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
O HashTable kann ohne Performance-Verlust in Multithreaded-Anwendungen eingesetzt werden. Java Basics - Anfänger-Themen 6
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
P 2n Potenzieren ohne Math.pow oder pow Java Basics - Anfänger-Themen 8
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
JavaBeginner22 TextArea, ohne Zeilenumbruch? Java Basics - Anfänger-Themen 4
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
S Was macht ++ ohne Schleife? Java Basics - Anfänger-Themen 4
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
S Chars vergleichen ohne Betrachtung der Groß und Kleinschreibung Java Basics - Anfänger-Themen 7
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
M for schleife ohne geschweifte Klammer Java Basics - Anfänger-Themen 15
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
L Zufälligen Zahlencode, ohne mehrfacher Verwendung einer Ziffer Java Basics - Anfänger-Themen 15
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
T Variable in for Schleife ansprechen ohne Array ? Java Basics - Anfänger-Themen 25
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
S Teilen ohne Rest Java Basics - Anfänger-Themen 15
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
C Programm ausführen ohne JRE? Java Basics - Anfänger-Themen 3
C NumberFormatException: null ohne Ausnahmebehandlung stoppen Java Basics - Anfänger-Themen 7
P Methode trim() ohne StringBuilder Java Basics - Anfänger-Themen 1
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
Z Methode zum Heraufinden von Anagrammen ohne Java API, Ausnahme String Java Basics - Anfänger-Themen 14
Z Attribut ändern ohne Kontrollstruktur Java Basics - Anfänger-Themen 2
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
C Wie habt Ihr angefangen mit der Java Programmierung, ohne Programmiervorkenntnisse Java Basics - Anfänger-Themen 8
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
M Bubblesort ohne Array Java Basics - Anfänger-Themen 30
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
F Hilfe - Wahrheitswert überprüfen ohne If Java Basics - Anfänger-Themen 2
ZH1896ZH Java-SemesterTest ohne Lösung :( Java Basics - Anfänger-Themen 47
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
C Teilbarkeit ohne "if" Java Basics - Anfänger-Themen 3
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
B Input/Output System.out.print mit und ohne "" Java Basics - Anfänger-Themen 5
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
R for schleife ohne klammer Java Basics - Anfänger-Themen 14
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
C Problem: PC ohne Internet und keine Möglichkeit Programme zu laden Java Basics - Anfänger-Themen 5
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
B Potenzrechnung mit WindowBuilder ohne math.pow() Java Basics - Anfänger-Themen 1
Jackii ArrayList ausgabe ohne Dopplung Java Basics - Anfänger-Themen 11
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
D .txt überschreiben mit BufferedWriter ohne reset Java Basics - Anfänger-Themen 6
H Cäsar chiffrierung ohne if-Anweisung Java Basics - Anfänger-Themen 5
A Input/Output System.out Ausgabe aktualisieren, ohne Konsole vollzuspamen Java Basics - Anfänger-Themen 2
B Potenzen ohne Math.pow Java Basics - Anfänger-Themen 4
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
M Liste ohne Duplikate Java Basics - Anfänger-Themen 8
S Rekursiver InsertionSort ohne Schleife Java Basics - Anfänger-Themen 7
4 Median ohne Array Rausbekommen Java Basics - Anfänger-Themen 8
L Auf Methoden einer Subklasse zugreifen ohne Typecast ? Java Basics - Anfänger-Themen 6
5 for-Schleife ohne 3 Angaben Java Basics - Anfänger-Themen 2
D Sortiertes Array mischen ohne Duplikat Java Basics - Anfänger-Themen 5
M Email versenden Outlook, attached File, ohne Anmeldung Java Basics - Anfänger-Themen 4
P JavaFX ohne FXMLLoader Java Basics - Anfänger-Themen 3
J Erstellen einer Datei ohne path Java Basics - Anfänger-Themen 1
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
P Kann ich Java - Programme auch ohne Editor öffnen? Java Basics - Anfänger-Themen 70
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
C Klassen JTable wird ohne Header aufgebaut Java Basics - Anfänger-Themen 6
M Abbrechen Methode ohne return Java Basics - Anfänger-Themen 3
R Gleitkommazahlen ohne führende Null Java Basics - Anfänger-Themen 10
B Farbverlauf erstellen ohne Javafx, AWT usw.? Java Basics - Anfänger-Themen 34

Ähnliche Java Themen

Neue Themen


Oben