Random aus ArrayList immer gleich

Status
Nicht offen für weitere Antworten.

Silver-Blue

Mitglied
Hallo!

Code:
  //zufällige Anzahl von Gegenstaenden erzeugen.
    
     public String createThings()
  {
       Random zufall = new Random();
      String things = "Gegenstaende: ";
     
      int i = zufall.nextInt(box.size());
      
      if(i == 0){things = things + " none";}
      else{
      for (int x =1 ; x<box.size();x++)
      {
          
          Gegenstaende y = (Gegenstaende) box.get(x);
          things = things + y.getName() + " " + y.getGewicht() +"g; " ;
          
        }
        }
       return things;
    }
   // zufall von createThings() prüfen.
   
        public void printListe()
        {
            
             
                 System.out.println(createThings());
                }


Ich erzeuge sagen wir drei Instanzen der Klasse Gegenstaende die werden in der obenstehenden Klasse an das ArrayList Objekt box übergeben. Das klappt auch.

Wenn die methode createThings() // siehe oben
aufgerufen wird sollte sie aus box eine zufällige anzahl von Gegenständen ausgeben, das überprüf ich mit der 2. methode
printListe()

es kommt immer das selbe nur wenn ich die Klasse von den Methoden neu instanziere kommt etwas unterschiedliches. also nur beim ersten mal
rufe ich die Methode printListe hinter einander mehrfach auf bleibt es immer das selbe.
Ich dachte eine Methode und ihre variablen werden nach ihrem Aufruf gelöscht, also müsste Random doch jedes mal neu erzeugt werden wenn ich die methode createThings aufrufe?


:autsch:
 

Zilchinger

Mitglied
Code:
 for (int x =1 ; x<box.size();x++) 
      { 
          
          Gegenstaende y = (Gegenstaende) box.get(x); 
          things = things + y.getName() + " " + y.getGewicht() +"g; " ; 
          
        }

Hi, ich könnte mir vorstellen, das dort der Fehler liegt.

Wenn also die Zufallszahl != 0 ist, dann gibst du in der for-Schleife alle Werte aus, da sie ja von 1 bis box.size()-1 läuft. Das sind dann immer die gleichen Werte, weil die Wahrscheinlichkeit, das die Zufallszahl == 0 ist sehr gering ist. Und warum nimmst du den Index 0 nicht dazu? Das ist der erste Index in einer ArrayList!!!

Wenn ich das so richtig verstehe !!! :)
 

Silver-Blue

Mitglied
hm du hast recht.
wenn ich bedenke gab es immer nur 0 oder die box.size().


bin ich blöde :oops:

ne auf der 0 stelle ist ein Platzhalter, falls die null kommt werden keine Gegenstaende erzeugt.
 

Marc-André Aßbrock

Aktives Mitglied
Hallo!

Unser Lehrer hat uns vor kurzem folgendes erklärt:
Wirklichen Zufall gibt es ja logischerweise im Computer nicht. Also wird meistens irgendwie die Zahl aus der Systemzeit errechnet.
Wenn du jetzt die Methode createThings() dierekt nacheinander öffnest, dann kann es sein, dass sich die Systemzeit nicht geändert hat. Deshalb sollte man das Random-Objekt immer als Datenfeld speichern. Dadurch wiederholen sich die Werte nicht so leicht. Im Konstruktor kann man dann dieses Objekt anlegen.

MfG

Marc
 

Silver-Blue

Mitglied
hm das versteh ich nicht so ganz.Du meinst Random() nicht als lokales Objekt sondern all globales Klassen Objekt. werd ich gleich testen.
 

Marc-André Aßbrock

Aktives Mitglied
Kennst du den Unterschied zwischen lokaler Variabel und Datenfeld?
lokale Variable: Wird in einer Methode deklariert und ist nur in dieser gültig.
Datenfeld: Wird am Anfang der Klasse deklariert und ist im ganzen Objekt gültig.
Und Random sollte man im Datenfeld ablegen
 

Bleiglanz

Gesperrter Benutzer
schau mal in die API oder hier ins forum

zu java.util.Random gehört normalerweise ein seed...
 

Marc-André Aßbrock

Aktives Mitglied
Was ist ein seed? Ich habe mal kurz in die Doku reingeschaut, hat mich aber auch nicht so viel weitergebracht. Wird dann aus dem Parameter die Zufallszahl bestimmt? Wenn ja, dann macht es ja eigentlich nicht so viel Sinn, wenn man ja die Systemzeit nehmen kann hat man ja immer einen anderen Wert (insofern man die Objekte nicht zu schnell hintereinander aufruft).

MfG
M.A.
 

Silver-Blue

Mitglied
mich auch nicht, die doku ist wie oft sehr knapp mit erklärung.
Scheint sowas wie eine interne Zahl zu sein die man festlegen muss, einfach Random noch beim instanzieren eine Zahl übergeben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K ArrayList random füllen Java Basics - Anfänger-Themen 2
C Random aus ArrayList Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
laxla123 Bedeutung int random Java Basics - Anfänger-Themen 3
monsterherz Arbeiten mit Random Java Basics - Anfänger-Themen 12
J Math.Random Java Basics - Anfänger-Themen 9
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
K Problem mit "Random" Java Basics - Anfänger-Themen 5
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Random(x,y,z) Java Basics - Anfänger-Themen 4
alialhajhossein math.random Java Basics - Anfänger-Themen 3
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
D Wahrscheinlichkeiten mit Math.random() Methode Java Basics - Anfänger-Themen 1
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
I math.random Grenzwerte Java Basics - Anfänger-Themen 2
C Arraywerte random vertauschen Java Basics - Anfänger-Themen 2
E Methoden Math.Random() kürzen ? Java Basics - Anfänger-Themen 2
SchmidiMC Methoden Random in Methode neu generieren lassen Java Basics - Anfänger-Themen 1
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
D Erste Schritte Random erzeugen Java Basics - Anfänger-Themen 28
D Erste Schritte Random Java Basics - Anfänger-Themen 79
Z Problem mit "Random" in Java Java Basics - Anfänger-Themen 12
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
F Erste Schritte Random Zahl auswählen Java Basics - Anfänger-Themen 7
J Methoden Math.random unklar Java Basics - Anfänger-Themen 4
N java.util.Random - Zwei Zahlen mit festgesetzter Wahrscheinlichkeit? Java Basics - Anfänger-Themen 15
Thorwine Erste Schritte Wuerfelspiel mit Math.random() Java Basics - Anfänger-Themen 10
S Math.random() Zufall ? Java Basics - Anfänger-Themen 2
S Random Plattformen erstellen Java Basics - Anfänger-Themen 7
C Erste Schritte Random Wert auslesen und ausgeben Java Basics - Anfänger-Themen 2
H Ist Math.Random() eine Methode oder ein Methodenaufruf (Klausurfrage) Java Basics - Anfänger-Themen 4
I Random Ergebnis ausgeben und Gewinner ausgeben. Java Basics - Anfänger-Themen 3
I Spieler Name eintragen und Random Gewinner Java Basics - Anfänger-Themen 4
A Random String in TextView (Android)? Java Basics - Anfänger-Themen 2
V Random Java Basics - Anfänger-Themen 2
X Problem mit Math.random() Java Basics - Anfänger-Themen 2
S Random IDs immer 10-stellig? Wie? Java Basics - Anfänger-Themen 5
T Random vs. Math.random() Java Basics - Anfänger-Themen 2
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
B Verstehe ZufallInt = (int) (Math.random() * 5 + 1); nicht Java Basics - Anfänger-Themen 9
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
K Einfacher random namen weitergeben Java Basics - Anfänger-Themen 4
B Hilfe bei Greenfoot ( random blickrichtung + vor(); Java Basics - Anfänger-Themen 10
B Variablen Mehrere Zahlen mit unterschiedlicher Wahrscheinlichkeit mit Random auswählen Java Basics - Anfänger-Themen 17
M Random bereich und for schleife Java Basics - Anfänger-Themen 20
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
R java.util.Random Java Basics - Anfänger-Themen 8
T Zufallserzeugung mit math.random und speichern in array Java Basics - Anfänger-Themen 29
J Woher kommt das Objekt "Math" bei Math.random(); ? Java Basics - Anfänger-Themen 3
P Typecasting für Ganzzahlige Zufallszahl (Math.random) Java Basics - Anfänger-Themen 2
I Zwei Mal das selbe Objekt per Random :( Java Basics - Anfänger-Themen 7
E Random Java Basics - Anfänger-Themen 7
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
E Variable neue Random Zahl zuweisen, wenn Button geklickt Java Basics - Anfänger-Themen 5
J Bedeutung von math.random() math.round() Java Basics - Anfänger-Themen 7
K random problem Java Basics - Anfänger-Themen 3
F Problem Math.random in for-Schleife Java Basics - Anfänger-Themen 8
R (Math.random()*49) zahl darf aber nur einmal gezogen werden Java Basics - Anfänger-Themen 11
B Random() gleiche Zahlen ausschließen Java Basics - Anfänger-Themen 30
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
C math.random() Java Basics - Anfänger-Themen 9
R math.random wertebereich 16-21 Java Basics - Anfänger-Themen 3
B Math.random und Strings Java Basics - Anfänger-Themen 13
R Java Random Java Basics - Anfänger-Themen 13
G Zahl erstellen / Random Java Basics - Anfänger-Themen 12
J Random Java Basics - Anfänger-Themen 11
radiac Datentypen RANDOM-punkt setzen INNERHALB eines BEREICHes Java Basics - Anfänger-Themen 2
M Zufallszahlen mit Random Java Basics - Anfänger-Themen 4
K Random Zahlen in ein Feld Java Basics - Anfänger-Themen 4
N java.util.Random Java Basics - Anfänger-Themen 6
Luk10 math.random() Java Basics - Anfänger-Themen 2
walker23m Datentypen Zufällig umsortieren einer Hashmap(random?) Java Basics - Anfänger-Themen 3
M Junit TestCase für Random() Zahlen Java Basics - Anfänger-Themen 6
S Random zahlen mit unter und obergrenze Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
S Skatblatt darstellen durch Random? Java Basics - Anfänger-Themen 48
C Bereich festelgen bei Random Java Basics - Anfänger-Themen 9
H Random-Zahlen Java Basics - Anfänger-Themen 7
L Random Sortierung Java Basics - Anfänger-Themen 9
T random-methode Java Basics - Anfänger-Themen 18
M Random in Swing Java Basics - Anfänger-Themen 24
J Math.random() - kurze frage. Java Basics - Anfänger-Themen 20
J Random Wertebereich Java Basics - Anfänger-Themen 2
B Frage zu Random Java Basics - Anfänger-Themen 21
chik klasse random() Java Basics - Anfänger-Themen 6
B Random Zahlen und Formatierung Java Basics - Anfänger-Themen 6
G Random Zahlen Java Basics - Anfänger-Themen 25
S Diashoow Random Java Basics - Anfänger-Themen 4
G Switch-Case harmoniert nicht mit Random-Zahl Java Basics - Anfänger-Themen 3
Spin 4 stellige random zahl erzeugen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben