Zufallszahlen von x bis 80

tomovic

Bekanntes Mitglied
Das ist meine Schablone:
//Liefert eine von 17 Zufallszahlen (im Bereich von 13 bis 29)
zufallszahl = (int)(Math.random() * 17) + 13;

X ist mein Slider ( 0 bis 80)
Ich will Zufallszahlen von X bis 80.

Das ist meine Idee:
zufallszahl = (int)(Math.random() * 80 ) + X;
 
Das ist meine Idee:
zufallszahl = (int)(Math.random() * 80 ) + X;

Das wird nicht funktionieren. Wenn
Code:
Math.random()
Code:
1
ist, bekommst du
Code:
80+X
als Ergebnis.

Denk nochmal: Was passiert wenn
Code:
Math.random()
Code:
0
und was, wenn es
Code:
1
ist.
 
Laut Doku liefert Math.random() ja Werte >= 0.0 und < 1.0.

Aber dennoch würde (so wie ich das sehe) bei zB 0.99 als Random Zahl das Ergebnis (0.99 * 80) +4 == 83 herauskommen. Und laut Formel sollte der Bereich des Ergebnisses zwischen 4 und 80 sein.


Ich habe mich vor längerer Zeit auch mal mit Zufallszahlen (von bis) beschäftigt. Nach zahlreichen Versuchen ist das dabei herausgekommen:

Java:
public static int between(int from, int until)
{
    Random r = new Random();
    int param = (until-from)+1;

    return r.nextInt(param)+from;
}

Das (bis) ist in diesem Fall inklusive. Also: between(4, 80) liefert Werte >= 4 und <= 80.

Falls jemand einen gravierenden Feher findet, dann bitte hier posten.
 
Verstehe nicht ganz was du damit sagen möchtest. Wenn ich deine Formel durchrechne komme ich zu folgendem Schluss:

X = 4 (Formel soll Zufallszahl von 4 bis 80 erzeugen)
Formel: zufallszahl = (int)(Math.random() * 80 - 4) + 4;

Wenn von Math.random() eine 0.0 erzeugt wird gilt: ((0.0 * 80) -4) + 4. Ergibt 0. Damit wäre nicht erfüllt, dass die kleinste Zufallszahl 4 sein soll.
 
Wenn von Math.random() eine 0.0 erzeugt wird gilt: ((0.0 * 80) -4) + 4. Ergibt 0. Damit wäre nicht erfüllt, dass die kleinste Zufallszahl 4 sein soll.

Stimmt. Deswegen muss auch eine Klammer um das
Code:
X-4
:
Code:
y = random() * (80 - 4) + 4

für random() = 0.0:
y = 0 * 76 + 4 = 4

für random() = 1.0:
y = 1 * 76 + 4 = 80
 
Hey Tobse,
wieso so kompliziert, dieses ist doch leichter verständlich oder:
Java:
public static int getRandomValueBetween(int param1, int param2){
		return new Random().nextInt(param2 - (param1 - 1)) + param1;
	}

Grüße coco07!
 
Zuletzt bearbeitet:
Hey Tobse,
wieso so kompliziert, dieses ist doch leichter verständlich oder:
Java:
public static int getRandomValueBetween(int param1, int param2){
		return new Random().nextInt(param2 - (param1 - 1)) + param1;
	}

Grüße coco07!
Dein Code macht (fast) exakt das gleiche wie meiner mit dem Unterschied dass mein Code auf die Werte des Start-Threads angepasst ist.
 
Achsoo, ich dachte wieder an einen Thread in Java (suchti)...

Das ist mir schon klar, aber der Erstellet sagte nicht, dass das genau so aussehen MUSS...
Viel mehr war die Rede von einer Schablone, ich wollte nur meinen Senf dazu geben 🙂

grüße coco07!
 

Neue Themen


Zurück
Oben