/*
 * Created on Dec 18, 2003
 */
package lotto;

import java.util.*;

/**
 * @author oliver (boehm@javatux.de)
 */
public class Trommel {
    
    private Vector balls = null;
    private boolean sorted = true;

    public Trommel() {
        init();
    }

    private void init() {
        balls = new Vector(49);
        for (int i = 1; i <= 49; i++) {
            balls.add(new Integer(i));
        }
    }
    
    /**
     * Der Mischvorgang laueft so ab, dass eine beliebige Kugel gezogen wird
     * und am Ende wieder eingefuegt wird.
     */
    public void mixNumbers() {
        mixNumbers(100);
    }
    
    /**
     * mische...mische...mische...
     * @param n wie oft gemischt wird
     */
    public void mixNumbers(int n) {
        for (int i = 0; i < n; i++) {
            Integer ballnumber = this.getNumber();
            balls.add(ballnumber);
        }
        sorted = false;
    }
    
    public boolean isSorted() {
        return sorted;
    }
    
    /**
     * using bubble sort.
     */
    public void sort() {
        while (!sorted) {
            sorted = true;
            for (int i = 1; i < balls.size(); i++) {
                Integer min = (Integer) balls.get(i-1);
                Integer max = (Integer) balls.get(i);
                if (min.compareTo(max) > 0) {
                    balls.set(i-1, max);
                    balls.set(i, min);
                    sorted = false;
                }
            }
        }
    }
    
    /**
     * ...und hier die Ziehung der Lottozahlen.
     * @return
     */
    public Integer getNumber() {
        Random random = new Random(System.currentTimeMillis());
        int n = random.nextInt(balls.size());
        return (Integer) balls.remove(n);
    }
    
    /**
     * get number of kugeln inside - na, wieviele Kugeln sind noch in der
     * Trommel?
     * @return
     */
    public int getNoKugelnInside() {
        return balls.size();
    }

    public String toString() {
        String s = "";
        for (int i = 1; i < balls.size(); i++) {
            s += " " + balls.get(i);
        }
        return balls.firstElement().toString() + s;
    }

    public static void main(String[] args) {
        System.out.print("Ziehung:");
        Trommel trommel = new Trommel();
        for (int i = 0; i < 6; i++) {
            trommel.mixNumbers();
            System.out.print(" " + trommel.getNumber());
        }
        System.out.println();
    }
}
