# Java Zufallsgenerator (6 aus 49) Frage



## JavaUndC-Prog (19. Dez 2014)

Guten Abend zusammen,

Ich benötige Hilfe bei einem kleinen Programm, grundsätzlich programmieren wir in BlueJ. Ein nettes kleines Programm indem man ohne Main arbeiten kann... Ich habe jetzt ein solches Projekt programmiert und möchte dies nun in Eclipse ausführen, leider werden mir nur sechs Nullen angezeigt. 

Wenn mir jemand helfen könnte, wäre das echt nett. Danke 


```
import java.util.Random;
public class ZufallszahlenTester {
    public static Random zufallsGenerator;
    public static int zahlen;
    
    
    public ZufallszahlenTester() {
        zufallsGenerator = new Random();
    }
    
    public int[] zahlenGenerieren() {
        int[] zahlen = new int[6];
        for(int i = 0; i<zahlen.length; i++) {
            zahlen[i] = zufallsGenerator.nextInt(49)+1;
        }
        return zahlen;
    }
    public static void main(String[] args) {
        for(int k = 0; k<=5; k++) {
            System.out.print(zahlen[k]);
        }
    }
}
```


----------



## stg (19. Dez 2014)

Dein Code ist nicht kompilierbar, da gibt Eclipse dir garantiert nicht 6 Nullen aus, sondern allenfalls einen Compiler-Error.


----------



## JavaUndC-Prog (19. Dez 2014)

Genau der Fehler ist in der Main, nur möchte ich ja das erzeugte Array damit ja wieder ausgeben 


```
import java.util.Random;
public class ZufallszahlenTester {
    public static Random zufallsGenerator;
    public static int zahlen;
    
    
    public ZufallszahlenTester() {
        zufallsGenerator = new Random();
    }
    
    public int[] zahlenGenerieren() {
        int[] zahlen = new int[6];
        for(int i = 0; i<zahlen.length; i++) {
            zahlen[i] = zufallsGenerator.nextInt(49)+1;
        }
        return zahlen;
    }
    public static void main(String[] args) {
        for(int k = 0; k<=5; k++) {
            System.out.print(zahlen);
// Hier sollten eigentlich 6 Zahlen ausgegeben werden
        }
    }
}
```

Was kann/muss ich wie umschreiben, damit mein Code funktioniert ?


----------



## minzee (19. Dez 2014)

```
import java.util.Random;
class Main
{
   public static void main(String[] args)
   {
      Random r = new Random();
      int n = 49;
      int[] values = new int[n];
      for(int i = 0; i < n; ++i)
      {
         values[i] = i + 1;
      }
      for(int i = 0; i < 6; ++i)
      {
         // Index per Zufall auswählen:
         int j = r.nextInt(n--) + i;

         // swap:
         int value = values[j];
         values[j] = values[i];
         values[i] = value;
      }
   }
}
```
Das Ergebnis steht dann in den ersten 6 Stellen des Arrays.


----------



## JavaUndC-Prog (19. Dez 2014)

Danke Minzee, das hat mir schon weitergeholfen.

Ich habe mir selbst auch noch was überlegt:


```
import java.util.Random;

public class ZufallszahlenTester {

    static int i;

    ZufallszahlenTester() {

    }

    private static void ausgeben() {
        int i = new Random().nextInt(49) + 1;
        System.out.print(i + " ");
    }

    public static void main(String[] args) {
        for (int k = 0; k <= 5; k++) {
            ausgeben();
            {
            }
        }
    }
}
```

wie kann ich dieses Konstrukt mit einem Array implementieren ?

Nochmal kurz zu meinem ursprünglichen Code:


```
import java.util.Random;
public class ZufallszahlenTester {
    public static Random zufallsGenerator;
    public static int zahlen;
    
    
    public ZufallszahlenTester() {
        zufallsGenerator = new Random();
    }
    
    public int[] zahlenGenerieren() {
        int[] zahlen = new int[6];
        for(int i = 0; i<zahlen.length; i++) {
            zahlen[i] = zufallsGenerator.nextInt(49)+1;
        }
        return zahlen;
    }
}
```

Wie könnte ich diesen Code in eine Passende Main packen, das ist das einzige, was mir jetzt noch fehlt, um das zu verstehen ?
Danke !


----------



## Tobse (20. Dez 2014)

Die Methode zahlenGenerieren liefert dir ein array mit 6 zufälligen Zahlen, schön ! 

Dieses array musst du in der Main-Methode nurnoch ausgeben und fertig. Wie man iteriert und wie man ausgibt scheint dir ja klar zu sein.

P.S.: Es wird früher oder später vorkommen, dass im Rückgabewert von zahlenGenerieren() eine Zahl doppelt vorkommt.


----------



## JavaUndC-Prog (21. Dez 2014)

Danke nochmal an alle, die mir hier weitergeholfen haben !
Schön, dass sich immer wieder Leute finden, andere in ihren Projekten weiterzubringen !

An sich war es jetzt nicht weiter schwierig das umzusetzen, man kann den Code recht einfach in eine Main packen:


```
public class Hauptklasse {
    public static Random zufallsGenerator;
    public static int zahlen;
    public static int temp;

    public static void main(String[] args) {

        zufallsGenerator = new Random();
        int[] zahlen = new int[6];
        for (int i = 0; i < zahlen.length; i++) {
            zahlen[i] = zufallsGenerator.nextInt(49) + 1;
            temp = zahlen[i];
            zahlen[i] = temp;
            System.out.print(temp+" ");
        }
    }
}
```

FERTIG !

Danke !


----------



## Natac (22. Dez 2014)

Wozu soll denn bitte die temp-Variable bei dir gut sein!? 

```
temp = zahlen[i];
            zahlen[i] = temp;
            System.out.print(temp+" ");
```
Kannst du ganz locker durch folgendes ersetzen:
	
	
	
	





```
System.out.print(zahlen[i]+" ");
```

Wenn es wirklich 6 aus 49 sein soll, ist dein Code aber falsch. Denn der könnte mir auch eine Zahl zweimal liefern (was bei 6 aus 49 NICHT der Fall ist). 112233 ist bei dir ein mögliches Ergebnis.

Ich denke ich würde eine Liste mit Integer-Instanzen aufbauen (1-49) und dann 6x zufällig ein Element rausziehen und löschen. Und eine zufälligen Index zu generieren hast du ja schon.


----------

