Frage von Pokecrafter567, 78

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!

Antwort
von TheHunter147, 25

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;



Antwort
von ceevee, 37
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

Antwort
von 3v1lH4x0R, 50

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

Kommentar von ChristianPl ,

Kann könnte auch mit der Random class arbeiten
https://docs.oracle.com/javase/7/docs/api/java/util/Random.html

Antwort
von Destranix, 31

Weil du im zweiten Schritt b00 auf 25 setzt!

Für genaueres schau im Internet!

Keine passende Antwort gefunden?

Fragen Sie die Community