package javacodebook.core.random;

import java.util.Random;
import java.util.Arrays;

/**
 *
 * @author Mark Donnermeyer
 */
public class Lotto {
    
    Random rand;
    int count=0;
    int max = 0;
    int []selected;
    
    /**
     * Erzeugt einen neuen Lottozahlen-Generator. 
     */
    public Lotto(int count, int max) {
        rand = new Random();
        this.count = count;
        this.max   = max;
        selected = new int[count];
    }
    
    /**
     * Erzeugt neue Lotto-Zahlen
     */
    public void next() {
        int index=0;
        int number = 0;
        boolean flag;
        while(index<count) {
            flag = false;
            
            // Erzeugt eine neue Zufallszahl. Anschliessend
            // wird getestet, ob diese Zahl schon gezogen
            // wurde.
            number = rand.nextInt(max-1)+1;
            for (int i=0; i<index; i++) {
                if (number == selected[i])
                    flag = true;
            }
            // Wenn diese Zahl schon gezogen wurde, dann 
            // kann sie nicht mehr verwendet werden!
            if (flag == false) {
                selected[index] = number;
                index++;
            }
        }
        // Die Zahlen werden aufsteigend sortiert.
        Arrays.sort(selected);
    }

    /**
     * Gibt die Lottozahlen als String-Liste zurück
     */
    public String toString() {
        StringBuffer buf = new StringBuffer();
        for (int i=0; i<count; i++) {
            if (i!=0)
                buf.append(", ");
            buf.append(selected[i]);
        }
        return buf.toString();
    }
    
}
