# Math.random() - kurze frage.



## joni89 (9. Jul 2009)

wie lass ich mir mit Math.random ne Zufällige Ganzzahl zwischen 1-10 geben?
double zufallszahl = Math.random();
zufallszahl = zufallszahl * 10 + 1;

geht ja nicht, dann hab ich 0.0000000000.. - 10.xxxxxxxxxxxx

Danke


----------



## The_S (9. Jul 2009)

joni89 hat gesagt.:


> geht ja nicht, dann hab ich 0.0000000000.. - 10.xxxxxxxxxxxx



Sollte eher

1.000000000.. - 10.xxxxxxxxxx

sein.

Caste doch einfach das Ergebnis in einen 
	
	
	
	





```
int
```
.


----------



## joni89 (9. Jul 2009)

äh.. mein ich ja. 

wie?


----------



## SlaterB (9. Jul 2009)

java wie caste ich auf int? - Google-Suche


----------



## joni89 (9. Jul 2009)

hm, daraus bin ich jetz auch nicht ganz schlau gwordn..


String bla;
double zufallszahl = (Math.random()*10+1);
zufallszahl = Double.parseDouble( bla );

so hab ichs jetz mal gemacht, aber irgendwie muss ich string bla noch intialisieren.

ja.. keine ahnung.. mein gehirn will nimma so richtig. ^^


----------



## SlaterB (9. Jul 2009)

int x = (int) doubleZahl;


----------



## ARadauer (9. Jul 2009)

ich würd util.Random nehmen...


```
import java.util.Random;

public class Test {


   public static void main(String[] args) {
    Random rnd = new Random();
    for(int i =0; i <100; i++){
      int zahl = rnd.nextInt(10)+1;
      System.out.println(zahl);      
    }
   }
}
```


----------



## joni89 (9. Jul 2009)

SlaterB hat gesagt.:


> int x = (int) doubleZahl;



ich verstehs grad garnicht mehr.. kann doch nicht sein, dass ich aufeinmal zu blöd zum parsen bin. ^^

also, was müsst ich schreiben, wenn ich daweil nur stehen hab:

double zufallszahl = Math.random();



.. würd das jetz gern kapieren.


----------



## SlaterB (9. Jul 2009)

double zufallszahl = Math.random();
int rund = (int) zufallszahl; // würde hier immer 0 sein, da Math.random() nur zwischen 0 und 1 liefert


----------



## joni89 (9. Jul 2009)

also noch *10+1 ans mathding. passt. danke! 

dachte, das wär viel komplizierter, weil der (int) befehl im tutorial noch nie vorkam.


----------



## Leroy42 (9. Jul 2009)

(int) ist auch kein Befehl sondern nur ein cast.


----------



## The_S (9. Jul 2009)

joni89 hat gesagt.:


> dachte, das wär viel komplizierter, weil der (int) befehl im tutorial noch nie vorkam.



Was denn für ein Tutorial?


----------



## joni89 (9. Jul 2009)

Java Tutorial interaktiv - Programmieren lernen mit Java

kapitel 20 war ich grad.


----------



## musiKk (9. Jul 2009)

ARadauer hat gesagt.:


> ich würd util.Random nehmen...



Ich auch.


----------



## The_S (10. Jul 2009)

joni89 hat gesagt.:


> Java Tutorial interaktiv - Programmieren lernen mit Java
> 
> kapitel 20 war ich grad.



Hol dir lieber ein anständiges Buch, das du *parallel *dazu liest.


----------



## Tearchen (28. Feb 2011)

Da die Frage zum Thema passt, ist hier ein Fehler in meinem Buch ?

"Danach soll durch die Anweisung
int geheimZahl = (int) (99 * Math.random() + 1);
eine Zufallszahl geheimZahl zwischen 1 und 100 generiert werden."

Damit wird doch eine Zufallszahl von 1 (einschließlich) bis 99 (einschließlich) generiert. 

Wie müsste der Befehl lauten damit die 1 nicht vorkommt also nur Zahlen von 2 bis 99 vorkommen ?


----------



## SlaterB (28. Feb 2011)

> Damit wird doch eine Zufallszahl von 1 (einschließlich) bis 99 (einschließlich) generiert. 
was auch gewünscht sein kann, je nach Interpretation von "zwischen 1 und 100"

> nur Zahlen von 2 bis 99 vorkommen ? 
keine eigene Idee allein schon aus dem zitierten Beispiel? 
ich verrate die Hälfte: statt +1 muss +2 stehen,


----------



## Raziell (28. Feb 2011)

```
(int) (Math.random()*max)+2;
```


----------



## Tearchen (28. Feb 2011)

```
(int) (Math.random()*max)+2;
```

Dabei kommt die 100 vor.




```
int zufall = (int) (99 * Math.random() + 2);
```

Alle Zahlen von 2 (einschließlich) bis 100 (einschließlich).


Durch ausprobieren weiß ich nun es klappt mit

```
int zufall = (int) (98 * Math.random() +2)
```
nur Zahlen zwischen 1 und 100 (2 bis 99).
Also müsste das ein Fehler im Buch sein.  (wobei ist natürlich Auslegungssache ob 1 und 100 mit zählen)

Getestet natürlich mit Zahlen zwischen 1 und 10.


----------



## Raziell (28. Feb 2011)

Habe jetzt nochmal folgendes gefunden:


```
public int getZufallszahl(min, max) {
	return Math.floor(Math.random() * (max - min + 1)) + min;
}
```

Soll wohl am korrektesten sein


----------



## Rahmspinat (28. Feb 2011)

Moin,

muss es denn Math sein?

ich nutze immer folgendes


```
public static int generatNumberBetween(int min, int max){
        Random random = new Random();
        return random.nextInt(max - min + 1) + min;
    }
```

gruß Rahmspinat


----------

