content: /*
   * Copyright (C) 2005 Luca Veltri - University of Parma - Italy
   * 
   * This file is part of MjSip (http://www.mjsip.org)
   * 
   * MjSip is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   * 
   * MjSip is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   * 
   * You should have received a copy of the GNU General Public License
   * along with MjSip; if not, write to the Free Software
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   * 
   * Author(s):
   * Luca Veltri (luca.veltri@unipr.it)
   */
  
  package org.zoolu.tools;
  
  /**
   * Class Random collects some static methods for generating random numbers and
   * other stuff.
   */
  public class Random {
  	/** The random seed */
  	static final long seed = System.currentTimeMillis();
  	// static final long seed=0;
  
  	static java.util.Random rand = new java.util.Random(seed);
  
  	// static java.util.Random rand=new java.util.Random();
  
  	/** Returns a random integer between 0 and n-1 */
  	/*
  	 * static public int nextInt(int n) { seed=(seed*37)%987654321; return
  	 * (int)(seed%n); }
  	 */
  
  	/** Returns true or false respectively with probability p/100 and (1-p/100) */
  	/*
  	 * static boolean percent(int p) { return integer(100)<p; }
  	 */
  
  	/** Sets the seed of this random number generator using a single long seed */
  	public static void setSeed(long seed) {
  		rand.setSeed(seed);
  	}
  
  	/** Returns a random integer */
  	public static int nextInt() {
  		return rand.nextInt();
  	}
  
  	/** Returns a random integer between 0 and n-1 */
  	public static int nextInt(int n) {
  		return Math.abs(rand.nextInt()) % n;
  	}
  
  	/** Returns a random long */
  	public static long nextLong() {
  		return rand.nextLong();
  	}
  
  	/** Returns a random boolean */
  	public static boolean nextBoolean() {
  		return rand.nextInt(2) == 1;
  	}
  
  	/** Returns a random array of bytes */
  	public static byte[] nextBytes(int len) {
  		byte[] buff = new byte[len];
  		for (int i = 0; i < len; i++)
  			buff[i] = (byte) nextInt(256);
  		return buff;
  	}
  
  	/** Returns a random String */
  	public static String nextString(int len) {
  		byte[] buff = new byte[len];
  		for (int i = 0; i < len; i++) {
  			int n = nextInt(62);
  			buff[i] = (byte) ((n < 10) ? 48 + n : ((n < 36) ? 55 + n : 61 + n));
  		}
  		return new String(buff);
  	}
  
  	/** Returns a random numeric String */
  	public static String nextNumString(int len) {
  		byte[] buff = new byte[len];
  		for (int i = 0; i < len; i++)
  			buff[i] = (byte) (48 + nextInt(10));
  		return new String(buff);
  	}
  
  	/** Returns a random hexadecimal String */
  	public static String nextHexString(int len) {
  		byte[] buff = new byte[len];
  		for (int i = 0; i < len; i++) {
  			int n = nextInt(16);
  			buff[i] = (byte) ((n < 10) ? 48 + n : 87 + n);
  		}
  		return new String(buff);
  	}
  }
  