package de.unikoeln.informatik.pp2007.tools;
/**
 * Class Random
 * Liefert von einem Seed-Wert ausgehen eine reproduzierbare
 * Folge von Pseudo-Zufallszahlen
 * 
 * @author ullrich
 *
 * @version 29 Jan 7
 */

public class Random {
	
	// Aktueller Seed-Wert
	private static int seed = 0;

	
	/**
	 * Setzt einen Seed-Wert als Ursprung fuer eine Pseudo-Zufallsfolge.
	 * 
	 * @param mySeed
	 */
	
	public static void setSeed(int mySeed) {
		seed = mySeed;
	}
	
	
	/**
	 * Liefert den aktuellen Seed-Wert zurueck.
	 * 
	 * @return Seed-Wert
	 */
	
	public static int getSeed() {
		return seed;
	}
	
	
	/**
	 * Berechnung einer 32-bittigen Pseudozufallszahl. 
	 * Die Werte der berechneteten Folge streuen ausreichend, um fuer einfache 
	 * Anwendungen als "zufaellig" angesehen zu werden. 
	 * 
	 * @return Zufallszahl zwischen 0 und Integer.MAX_VALUE
	 */
	
	public static int rnd() {
		seed = seed * 1103515245 + 12345;
		return Math.abs(seed);
	}
	
	
	/**
	 * Gibt eine Pseudozufallszahl von 0 bis max-1 zurueck.
	 * 
	 * @param max 
	 * @return Zufallszahl
	 */
	
	public static int rnd(int max) {
		return rnd()%max;
	}
}

// EoF
