// PseudoRandom.java
//
// Author:
// Antonio J. Nebro <antonio@lcc.uma.es>
// Juan J. Durillo <durillo@lcc.uma.es>
//
// Copyright (c) 2011 Antonio J. Nebro, Juan J. Durillo
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package jmetal.util;
/**
* Class representing a pseudo-random number generator
*/
public class PseudoRandom {
/**
* generator used to obtain the random values
*/
private static IRandomGenerator random_ = null;
private static RandomGenerator defaultGenerator_ = new RandomGenerator() ;
/**
* Constructor.
* Creates a new instance of PseudoRandom.
*/
private PseudoRandom() {
if (random_ == null){
//this.random = new java.util.Random((long)seed);
random_ = new RandomGenerator();
}
} // PseudoRandom
public static void setRandomGenerator(IRandomGenerator generator) {
random_ = generator ;
}
/**
* Returns a random int value using the Java random generator.
* @return A random int value.
*/
public static int randInt() {
if (random_ == null) {
random_ = defaultGenerator_ ;
}
return random_.nextInt(Integer.MAX_VALUE);
} // randInt
/**
* Returns a random double value using the PseudoRandom generator.
* Returns A random double value.
*/
public static double randDouble() {
if (random_ == null) {
random_ = defaultGenerator_ ;
}
//return random_.rndReal(0.0,1.0);
return random_.nextDouble();
//return randomJava.nextDouble();
} // randDouble
/**
* Returns a random int value between a minimum bound and maximum bound using
* the PseudoRandom generator.
* @param minBound The minimum bound.
* @param maxBound The maximum bound.
* Return A pseudo random int value between minBound and maxBound.
*/
public static int randInt(int minBound, int maxBound) {
if (random_ == null) {
random_ = defaultGenerator_ ;
}
return minBound + random_.nextInt(maxBound-minBound);
//return minBound + randomJava.nextInt(maxBound-minBound+1);
} // randInt
/** Returns a random double value between a minimum bound and a maximum bound
* using the PseudoRandom generator.
* @param minBound The minimum bound.
* @param maxBound The maximum bound.
* @return A pseudo random double value between minBound and maxBound
*/
public static double randDouble(double minBound, double maxBound) {
if (random_ == null) {
random_ = defaultGenerator_ ;
}
return minBound + random_.nextDouble() * (maxBound-minBound);
//return minBound + (maxBound - minBound)*randomJava.nextDouble();
} // randDouble
} // PseudoRandom