package org.spaceroots.mantissa.random;

/** This class implements a normalized uniform random generator.

 * 

Since this is a normalized random generator, it has a null mean * and a unit standard deviation. Beeing also a uniform * generator, it produces numbers in the range [-sqrt(3) ; * sqrt(3)]. It uses the {@link MersenneTwister MersenneTwister} * generator as the underlying generator.

* @see MersenneTwister * @version $Id: UniformRandomGenerator.java 1709 2006-12-03 21:16:50Z luc $ * @author L. Maisonobe */ public class UniformRandomGenerator implements NormalizedRandomGenerator { /** Create a new generator. * The seed of the generator is related to the current time. */ public UniformRandomGenerator() { generator = new MersenneTwister(); } /** Creates a new random number generator using a single int seed. * @param seed the initial seed (32 bits integer) */ public UniformRandomGenerator(int seed) { generator = new MersenneTwister(seed); } /** Creates a new random number generator using an int array seed. * @param seed the initial seed (32 bits integers array), if null * the seed of the generator will be related to the current time */ public UniformRandomGenerator(int[] seed) { generator = new MersenneTwister(seed); } /** Create a new generator initialized with a single long seed. * @param seed seed for the generator (64 bits integer) */ public UniformRandomGenerator(long seed) { generator = new MersenneTwister(seed); } /** Generate a random scalar with null mean and unit standard deviation. *

The number generated is uniformly distributed between -sqrt(3) * and sqrt(3).

* @return a random scalar with null mean and unit standard deviation */ public double nextDouble() { return TWOSQRT3 * generator.nextDouble() - SQRT3; } /** Underlying generator. */ MersenneTwister generator; private static final double SQRT3 = Math.sqrt(3.0); private static final double TWOSQRT3 = 2.0 * Math.sqrt(3.0); private static final long serialVersionUID = -6913329325753217654L; }

Ads help maintain this website.