Java befehl random macht nur die selbe zahl?
double b00= Math.random(); b00 = 25*+1; int a10 = (int) b00;
das spuckt immer 25 aus, woram liegt das? und was muss ich machen, damit das zahlen von 1 bis 25 ausspuckt!
4 Antworten
b00 = 25*+1
Mit dieser Zeile weißt du der Variablen b00 das Ergebnis der Rechnung "25 * 1" zu. Das ergibt immer 25. Den Wert, der vorher in b00 war (eine Zufallszahl zwischen 0 und 1), überschreibst du mit der Zeile. ;)
Richtig wäre wahrscheinlich irgendwas in Richtung
zufallszahl = (int)(Math.random() * 25) + 1;
http://javatipps.blogspot.de/2011/08/mathrandom-anwendungsbeispiele-mit.html
Hallo,
dein Problem ist auch völlig logisch. Gehen wir mal das durch, was du gemacht hast.
double b00 = Math.random();
Dieser Code definiert eine neue Variable vom Typ double mit einem Zufallswert (irgendwas zwischen 0 und 1 [z.B. 0.4666471712372402])
b00 = 25*+1;
Hier überschreibst Du die vorherige Variable mit der Berechnung. Das daraus resultierende Ergebnis ist 25.0
int a10 = (int)b00;
In diesem Schritt definierst Du einen Integer und castest die vorherige Variable zu diesem Integer.
Zusammenfassend hast Du einen großen Fehler gemacht, und zwar bei dem Überschreiben der Variable. Ich schreibe hier mal den Code rein wie er sein sollte (jedenfalls so wie ich es verstanden habe)
Ich habe immer noch nicht verstanden was die 25*+1soll, aber hier wird auf jeden Fall eine Random Zahl definiert mit dem Zahlenbereich 0-25
Random r = new Random();
double b00 = r.nextInt(25) + 1;
int a10 = (int) b00;
Unterteilen wir das Ganze mal in 3 kleinere Schritte. Tun wir dies an den Semikolons (;).
Zuerst deklarierst du einen double namens b00 und weisst ihm einen zufälligen Wert zu.
Dann weisst du b00 einen neuen Wert zu. Undzwar 25.
Im 3. Schritt weisst du dem neu deklarierten int a10 den Wert von b00 zu.
Ich hoffe du siehst das Problem.
Um nun eine Zahl zwischen 1 und 25 zu erzeugen verwendest du bitte folgenden Code: int a10 = Math.floor( Math.random() * 25 + 1 );
Math.random erzeugt zunächst eine Zufallszahl im Bereich [0,1[ (Größer oder Gleich als 0 und kleiner als 1).
Diese Zahl nimmst du Mal mit 25. Nun hast du eine Zahl zwischen 0 und 25.
Du addierst eins (1 und 26 wobei die Zahl immer kleiner als 26 sein wird).
Nun übergibst du das Ergebnis Math.floor. Diese Funktion rundet die Zahl ab und gibt sie als int zurück.
a10 beinhaltet nun einen int zwischen 1 und 25 (beides inklusive).
Kann könnte auch mit der Random class arbeiten
https://docs.oracle.com/javase/7/docs/api/java/util/Random.html
Weil du im zweiten Schritt b00 auf 25 setzt!
Für genaueres schau im Internet!