Class RandomEngine
 java.lang.Object

 com.opengamma.strata.math.impl.cern.RandomEngine

 All Implemented Interfaces:
Serializable
,Cloneable
,DoubleUnaryOperator
,IntUnaryOperator
 Direct Known Subclasses:
MersenneTwister
public abstract class RandomEngine extends Object implements DoubleUnaryOperator, IntUnaryOperator
Abstract base class for uniform pseudorandom number generating engines.Most probability distributions are obtained by using a uniform pseudorandom 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 2^{32} sub intervals, then randomly choosing one subinterval. double's are formed by dividing the interval [0.0,1.0] into 2^{64} sub intervals, then randomly choosing one subinterval.
Note that this implementation is not synchronized.
 Version:
 1.0, 09/24/99
 See Also:
MersenneTwister
,MersenneTwister64
,Random
, Serialized Form


Constructor Summary
Constructors Modifier Constructor Description protected
RandomEngine()
Makes this class non instantiable, but still let's others inherit from it.

Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description double
applyAsDouble(double dummy)
Equivalent to raw().int
applyAsInt(int dummy)
Equivalent to nextInt().Object
clone()
Returns a copy of the receiver.static RandomEngine
makeDefault()
Constructs and returns a new uniform random number engine seeded with the current time.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).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).abstract int
nextInt()
Returns a 32 bit uniformly distributed random number in the closed interval [Integer.MIN_VALUE,Integer.MAX_VALUE] (including Integer.MIN_VALUE and Integer.MAX_VALUE);long
nextLong()
Returns a 64 bit uniformly distributed random number in the closed interval [Long.MIN_VALUE,Long.MAX_VALUE] (including Long.MIN_VALUE and Long.MAX_VALUE).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).
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods inherited from interface java.util.function.DoubleUnaryOperator
andThen, compose

Methods inherited from interface java.util.function.IntUnaryOperator
andThen, compose




Method Detail

applyAsDouble
public double applyAsDouble(double dummy)
Equivalent to raw(). This has the effect that random engines can now be used as function objects, returning a random number upon function evaluation. Specified by:
applyAsDouble
in interfaceDoubleUnaryOperator

applyAsInt
public int applyAsInt(int dummy)
Equivalent to nextInt(). This has the effect that random engines can now be used as function objects, returning a random number upon function evaluation. Specified by:
applyAsInt
in interfaceIntUnaryOperator

makeDefault
public static RandomEngine makeDefault()
Constructs and returns a new uniform random number engine seeded with the current time. Currently this isMersenneTwister
. Returns:
 the engine

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). Returns:
 the random number

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). Returns:
 the random number

nextInt
public abstract int nextInt()
Returns a 32 bit uniformly distributed random number in the closed interval [Integer.MIN_VALUE,Integer.MAX_VALUE] (including Integer.MIN_VALUE and Integer.MAX_VALUE); Returns:
 the random number

nextLong
public long nextLong()
Returns a 64 bit uniformly distributed random number in the closed interval [Long.MIN_VALUE,Long.MAX_VALUE] (including Long.MIN_VALUE and Long.MAX_VALUE). Returns:
 the random number

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). Returns:
 the random number

