# Befehl zum erstellen einer Zufallszahl.



## blackhead77 (25. Okt 2006)

Hallo,


Wie erstelle ich eine Zufallszahl wobei die größte Zahl z.B 25 sein soll. Und jede Zahl soll nur einmal vorkommen.0


Vielen dank

Blackhead77


----------



## b0unc3 (25. Okt 2006)

klasse util importieren
import java.util.*;

einmal ein Ramdon objekt erstellen
Random rnd = new Random();

und dann eine zufallszahl erzeugen lassen
rnd.nextInt(25); //die 25 ist die "größte" zahl, können aber auch negative zahlen kommen


----------



## meez (25. Okt 2006)

Und jede Zahl soll nur einmal vorkommen :?: Verteh ich net...


----------



## blackhead77 (25. Okt 2006)

meez hat gesagt.:
			
		

> Und jede Zahl soll nur einmal vorkommen :?: Verteh ich net...




Ich möchte mehre Zufallszahlen erstellen. Der Computer soll die Zahlen die er schon ausgewählt hat auschließen so das Sie nicht doppelt da stehen.




> rnd.nextInt(25); //die 25 ist die "größte" zahl, können aber auch negative zahlen kommen



und wie schließt man Negative zahlen aus?


Danke
Blackhead77


----------



## The_S (25. Okt 2006)

Mach ein


```
(int)(Math.random() * maxzahl + 1)
```

Und dann halt bei jeder zahl gucken ob sie scho existiert. Alternative wäre eine ArrayList mit allen möglichen Zahlen. Dann eine zufallszahl aus dem ArrayIndex bestimmen und anschließend die ausgewählte zahl löschen.


----------



## blackhead77 (25. Okt 2006)

Ich habe den Code bei den variablen beigeschrieben aber es kommt diese Fehlermeldungen:


```
C:\Dokumente und Einstellungen\Ingo\Eigene Dateien\Java\Lotto.java:35: not a statement
	(int)(Math.random() * maxzahl + 1)
        ^

^
1 errors

Prozess beendet mit Exit-Code 1
```


----------



## SlaterB (25. Okt 2006)

dass in Java ein ; hinter jedem Befehl steht ist dir schon mal aufgefallen?
nur im Forum darf man das ausnahmsweise vergessen

für dich also im ganzen Satz:
int zufall = (int)(Math.random() * maxzahl + 1);

na das kann ja noch was werden..


----------



## dieta (25. Okt 2006)

Bei dieser Methode können die Zahlen allerdings auch mehrfach vorkommen. Das sie nur einmal vorkommen, geht z.B. so:

```
private void mixe()
{
	int anzahlZahlen = 25;
	ArrayList<Integer> ausgangsliste = new ArrayList<Integer>(anzahlZahlen);
	ArrayList<Integer> gemischteListe = new ArrayList<Integer>(anzahlZahlen);
	for(int i=1; i<anzahlZahlen+1; i++)
	{
		ausgangsliste.add(i);
		gemischteListe.add(i);
	}
	for(int i=0; i<anzahlZahlen; i++)
	{
		int z = (int)(Math.random() * ausgangsliste.size());
		gemischteListe.set(i, ausgangsliste.get(z));
		ausgangsliste.remove(z);
		System.out.println(gemischteListe.get(i));
	}
}
```

Dann musst du nur noch zu den imports java.util.ArrayList; dazuschreiben, und es sollte funktionieren.


----------



## SnooP (25. Okt 2006)

Oder man benutzt Collections.shuffle(ausgangsliste); nachdem man sie mit Zahlen von 1 bis max gefüllt hat.


----------

