# int-Array mit Zufallszahlen füllen



## qbic (16. Apr 2011)

Hallo,

ich möchte einem int-Array Zufallszahlen von 1 bis 12 zuweisen, die innerhalb des Arrays nur einmal vorkommen sollen.


```
int[] array = new int[12];
for(int i=0;i<12;i++) {
  array[i] = (int) (Math.random() * 12 + 1);
  System.out.print(array[i]+" ");
}
```

Was muss ich noch machen?


Google und SuFu haben nicht wirklich geholfen.


----------



## Antoras (16. Apr 2011)

Ach echt? Dann hast du nicht richtig gesucht. Das hier ist erst ein paar Tage alt: http://www.java-forum.org/mathematik/116289-random-sample.html


----------



## tuttle64 (16. Apr 2011)

Eleganterweise lässt sich das Problem mit "nur einmal vorkommen" mit der Collection HashSet, da diese keine Doubletten zulässt. Also sowas:


```
int[] array = new int[12];
		Set<Integer> set = new HashSet<Integer>();
		int zahl;
                        while(set.size() < 12) {
			zahl = (int) (Math.random() * 12 + 1);

			if (set.add(zahl)) {
				System.out.println(set.size());
				array[set.size()-1] = zahl;
				set.add(zahl);
			}
		}	
		System.out.println(Arrays.toString(array));
```

Die while-Schleife iteriert solange nicht 12 Elemente vorhanden sind. Die if-Bedingung prüft, ob die Zahl dem HashSet hinzugefügt werden konnte und falls ja, wird diese dem HashSet und auch dem array hinzugefügt.


----------



## Landei (16. Apr 2011)

Noch eleganter ist, eine Liste mit den Zahlen 1..12 zu füllen und dann [c]Collections.shuffle[/c] aufzurufen.


----------

