Class RandomEngine
- All Implemented Interfaces:
DoubleFunction,IntFunction,Serializable,Cloneable
- Direct Known Subclasses:
DRand,MersenneTwister
public abstract class RandomEngine extends PersistentObject implements DoubleFunction, IntFunction
Most probability distributions are obtained by using a uniform pseudo-random number generation engine followed by a transformation to the desired distribution. Thus, subclasses of this class are at the core of computational statistics, simulations, Monte Carlo methods, etc.
Subclasses produce uniformly distributed int's and long's
in the closed intervals [Integer.MIN_VALUE,Integer.MAX_VALUE] and
[Long.MIN_VALUE,Long.MAX_VALUE], respectively, as well as
float's and double's in the open unit intervals
(0.0f,1.0f) and (0.0,1.0), respectively.
Subclasses need to override one single method only: nextInt(). All
other methods generating different data types or ranges are usually layered
upon nextInt(). long's are formed by concatenating two 32
bit int's. float's are formed by dividing the interval
[0.0f,1.0f] into 232 sub intervals, then randomly
choosing one subinterval. double's are formed by dividing the
interval [0.0,1.0] into 264 sub intervals, then randomly
choosing one subinterval.
Note that this implementation is not synchronized.
- Version:
- 1.0, 09/24/99
- Author:
- wolfgang.hoschek@cern.ch
- See Also:
MersenneTwister,Random, Serialized Form
-
Constructor Summary
Constructors Modifier Constructor Description protectedRandomEngine()Makes this class non instantiable, but still let's others inherit from it. -
Method Summary
Modifier and Type Method Description doubleapply(double dummy)Equivalent toraw().intapply(int dummy)Equivalent tonextInt().static RandomEnginemakeDefault()Constructs and returns a new uniform random number engine seeded with the current time.doublenextDouble()Returns a 64 bit uniformly distributed random number in the open unit interval(0.0,1.0)(excluding 0.0 and 1.0).floatnextFloat()Returns a 32 bit uniformly distributed random number in the open unit interval(0.0f,1.0f)(excluding 0.0f and 1.0f).abstract intnextInt()Returns a 32 bit uniformly distributed random number in the closed interval[Integer.MIN_VALUE,Integer.MAX_VALUE](includingInteger.MIN_VALUEandInteger.MAX_VALUE);longnextLong()Returns a 64 bit uniformly distributed random number in the closed interval[Long.MIN_VALUE,Long.MAX_VALUE](includingLong.MIN_VALUEandLong.MAX_VALUE).doubleraw()Returns a 32 bit uniformly distributed random number in the open unit interval(0.0,1.0)(excluding 0.0 and 1.0).
-
Constructor Details
-
RandomEngine
protected RandomEngine()Makes this class non instantiable, but still let's others inherit from it.
-
-
Method Details
-
apply
public double apply(double dummy)Equivalent toraw(). This has the effect that random engines can now be used as function objects, returning a random number upon function evaluation.- Specified by:
applyin interfaceDoubleFunction- Parameters:
dummy- argument passed to the function.- Returns:
- the result of the function.
-
apply
public int apply(int dummy)Equivalent tonextInt(). This has the effect that random engines can now be used as function objects, returning a random number upon function evaluation.- Specified by:
applyin interfaceIntFunction- Parameters:
dummy- argument passed to the function.- Returns:
- the result of the function.
-
makeDefault
Constructs and returns a new uniform random number engine seeded with the current time. Currently this isMersenneTwister. -
nextDouble
public double nextDouble()Returns a 64 bit uniformly distributed random number in the open unit interval(0.0,1.0)(excluding 0.0 and 1.0). -
nextFloat
public float nextFloat()Returns a 32 bit uniformly distributed random number in the open unit interval(0.0f,1.0f)(excluding 0.0f and 1.0f). -
nextInt
public abstract int nextInt()Returns a 32 bit uniformly distributed random number in the closed interval[Integer.MIN_VALUE,Integer.MAX_VALUE](includingInteger.MIN_VALUEandInteger.MAX_VALUE); -
nextLong
public long nextLong()Returns a 64 bit uniformly distributed random number in the closed interval[Long.MIN_VALUE,Long.MAX_VALUE](includingLong.MIN_VALUEandLong.MAX_VALUE). -
raw
public double raw()Returns a 32 bit uniformly distributed random number in the open unit interval(0.0,1.0)(excluding 0.0 and 1.0).
-