Java befehl random macht nur die selbe zahl?

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;



Woher ich das weiß:Hobby – Langjährige Programmiererfahrung

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).


Weil du im zweiten Schritt b00 auf 25 setzt!

Für genaueres schau im Internet!