# Arrays zufällig ausgeben



## ivi83 (29. Jan 2006)

Hallo zusammen


Wie kann man ein Array zufällig ausgeben?

z.b. int array[beliebig]  ===>> und dann die Reihenfolge der Werte einfach zufällig ausgeben? Kann ich das irgendwie mit der Random Klasse machen?



Danke für die Antworten 

Gruss


----------



## bygones (29. Jan 2006)

entweder mit der Random klasse oder in eine List stecken und dann per Collections.shuffle einfach durchwürfeln lassen


----------



## ivi83 (30. Jan 2006)

ja danke erst mal für die Antwort. Aber wie muss ich das konkret nun machen?...Also hab mal die Klassen Collections, und ArrayList importiert. Wie wende ich die nun an, d.h. wie stecke ich das Array in eine Liste (Was ist eigentlich eine Liste?) und wie wende ich danach Collections.shuffle an.....?? 

Danke und Gruss


----------



## bygones (30. Jan 2006)

ivi83 hat gesagt.:
			
		

> ja danke erst mal für die Antwort. Aber wie muss ich das konkret nun machen?...Also hab mal die Klassen Collections, und ArrayList importiert. Wie wende ich die nun an, d.h. wie stecke ich das Array in eine Liste (Was ist eigentlich eine Liste?) und wie wende ich danach Collections.shuffle an.....??
> 
> Danke und Gruss


uff - die ganzen Grundlagen kann ich dir nun nicht erklären (bzgl listen z.B. - da bietet die API und jedes Java Buch eine gute Lösung)

ein bsp für die shuffle Methode

```
String[] s = new String[]{"1", "2", "3", "4"};
Collections.shuffle( Arrays.asList( s ) );
System.out.println( Arrays.toString( s ) );
```


----------



## sliwalker (30. Jan 2006)

Hi,

ich glaub ich muss mich ja mal schämen, das ich wirklich noch nie eine ArrayList verwendet habe. Nichtmal um es zu lernen 

Aber ich kann Dir noch eine Alternative aufzeigen.
(Würd mich übrigens mal interessieren, ob meine Alternative gemeinhin als "nicht so doll" angesehen wird, oder ob es im Prinzip egal ist, weil es immer mehrere Wege gibt. Hab nämlich noch Probleme mein Wissen richtig einzuschätzen  )

Alternative:
Du kannst alle Elemente des Arrays in einen Vector packen.

```
Vector vec = new Vector();
for (int i = 0; i < array.length; i++)
{
    vec.addElement(array[i]);
}
```

Dann holst Du Dir per Zufallszahl ein Element aus dem Vector und entfernst das geholte Element aus dem Vector solange, bis der Vector leer ist.

```
Random rand = new Random();

while (vec.size() > 0)
{
    int index = rand.nextInt(vec.size());
    TypAusDemArray arrayElement = (TypAusDemArray)vec.elementAt(index);
    vec.removeElementAt(index);

    // und zum Beispiel ein
   System.out.println("Mein Element: " + arrayElement);
}
```

Du bekommst immer eine Zufallszahl, die im gültigen Bereich liegt. Gib dazu bei google: Java API Random , ein und such nach nextInt(). In der Erklärung findest Du den Grund dafür. Man muss nur wenig Englisch können um die Sätze zu verstehen.


greetz
SLi


----------



## bygones (31. Jan 2006)

@sli:
schau in die FAQs wegen Collection - HowTo, da wird erklärt wie ArrayList / Vector usw


----------

