Methode Zufallszahl ohne List<Integer>-Zahlen

  • 3 Antworten
  • Letztes Antwortdatum
C

coolz3ro

Neues Mitglied
0
Hallo! Ich möchte eine Methode schreiben, die mir bei Aufruf eine Zufallszahl zurück gibt. Diese Zufallszahl soll allerdings unterschiedlich sein zu jenen Zahlen, die in der Integer-List "nicht" gespeichert sind.
(Die Methode wird öfters aufgerufen [wie oft ist unbekannt, deshalb das Objekt!] und die jeweils zurück gegebenen Zahlen dann in dieser Liste gespeichert. Es sollen also bei jedem Aufruf unterschiedliche Zahlen von der Methode zurück gegeben werden, die vorher noch nicht zurück gegeben wurden.)

Das Problem: Es wird zwar eine zufällige Zahl zwischen 0 und 4 zurück gegeben und die Integer-List wird auch kontinuierlich erweitert um diese Zahl, aber die zurück gegebenen Zahlen wiederholen sich trotzdem.

Hier die Methode:
Code:
public int getZufallszahl(List<Integer> nicht){
        
        int[] intArray = new int[nicht.size()];
        for (int i = 0; i < nicht.size(); i++) {
        intArray[i] = nicht.get(i);
        }
        
        Random ra = new Random();
        int zahl;
        zahl = ra.nextInt(5);
        while (Arrays.asList(intArray).contains(zahl)) {
            zahl = ra.nextInt(5);
            }
        return zahl;
        }

Hier der Methodenaufruf und der befehl zur Speicherung in der List:

Code:
zufallszahl = getZufallszahl(nicht);
                 
nicht.add(new Integer(zufallszahl));
 
Code:
[FONT=&quot] public int getZufallszahl(List<Integer> nicht)
[/FONT]{
  
  [FONT=&quot]        Random ra = new Random();[/FONT]
  [FONT=&quot]        int zahl;[/FONT]
  [FONT=&quot]        zahl = ra.nextInt(5);[/FONT]
  [FONT=&quot]        while (nicht.contains(zahl))
        {[/FONT]
  [FONT=&quot]            zahl = ra.nextInt(5);[/FONT]
  [FONT=&quot]        }[/FONT]
  [FONT=&quot]        return zahl;[/FONT]
  [FONT=&quot] }[/FONT]
  [FONT=&quot]
[/FONT]
[FONT=&quot]

Sollte so gehen, aber der Sinn erschließt sich mir nicht so ganz.
Am Ende wirst du doch immer eine Liste haben, in der in zufälliger Reihenfolge die Zahlen 0-4 stehen oder nicht?

Gruß
Maddi[/FONT]
 
  • Danke
Reaktionen: coolz3ro
Funktioniert! Vielen Dank! Ich brauche einfach die Zufallszahl, damit ich - zufällig eben - eine bestimmte Nachricht aufrufen kann. Ich möchte aber nicht, dass zwei mal die gleiche Nachricht kommt. Das ist der Sinn dahinter.
 
coolz3ro schrieb:
Funktioniert! Vielen Dank! Ich brauche einfach die Zufallszahl, damit ich - zufällig eben - eine bestimmte Nachricht aufrufen kann. Ich möchte aber nicht, dass zwei mal die gleiche Nachricht kommt. Das ist der Sinn dahinter.

Das macht dein Vorhaben etwas klarer. Du hast also sowas wie einen Pool von Quizfragen, willst eine zufällige ziehen und dann nie wieder die gleiche.
Dann mach dir doch eine Liste mit den Ids der Fragen, las einmal Collections.shuffel() drüber laufen und zieh dann einfach nach der Reihe ids aus der Liste.
 
Zurück
Oben Unten