- java.lang.Object
-
- net.finmath.montecarlo.BrownianMotionFromRandomNumberGenerator
-
- All Implemented Interfaces:
Serializable,BrownianMotion,IndependentIncrements
public class BrownianMotionFromRandomNumberGenerator extends Object implements BrownianMotion, Serializable
Implementation of a time-discrete n-dimensional Brownian motion W = (W1,...,Wn) where Wi is a Brownian motion and Wi, Wj are independent for i not equal j. For a correlated Brownian motion with seeCorrelatedBrownianMotion. Here the dimension n is called factors since this Brownian motion is used to generate multi-dimensional multi-factor Ito processes and there one might use a different number of factors to generate Ito processes of different dimension. The quadruppel (time discretization, number of factors, number of paths, seed) defines the state of an object of this class, i.e., BrownianMotionLazyInit for which there parameters agree, generate the same random numbers. The class is immutable and thread safe. It uses lazy initialization.- Version:
- 1.6
- Author:
- Christian Fries
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description BrownianMotionFromRandomNumberGenerator(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, RandomNumberGenerator randomNumberGenerator)Construct a Brownian motion.BrownianMotionFromRandomNumberGenerator(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, RandomNumberGenerator randomNumberGenerator, RandomVariableFactory abstractRandomVariableFactory)Construct a Brownian motion.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object o)RandomVariablegetBrownianIncrement(int timeIndex, int factor)Return the Brownian increment for a given timeIndex.BrownianMotiongetCloneWithModifiedSeed(int seed)Return a new object implementing BrownianMotion having the same specifications as this object but a different seed for the random number generator.BrownianMotiongetCloneWithModifiedTimeDiscretization(TimeDiscretization newTimeDiscretization)Return a new object implementing BrownianMotion having the same specifications as this object but a different time discretization.RandomVariablegetIncrement(int timeIndex, int factor)Return the increment for a given timeIndex and given factor.intgetNumberOfFactors()Returns the number of factors.intgetNumberOfPaths()Returns the number of paths.RandomVariablegetRandomVariableForConstant(double value)Returns a random variable which is initialized to a constant, but has exactly the same number of paths or discretization points as the ones used by this BrownianMotion.TimeDiscretizationgetTimeDiscretization()Returns the time discretization used for this set of time-discrete Brownian increments.inthashCode()StringtoString()-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.finmath.montecarlo.BrownianMotion
getBrownianIncrement
-
Methods inherited from interface net.finmath.montecarlo.IndependentIncrements
getIncrement
-
-
-
-
Constructor Detail
-
BrownianMotionFromRandomNumberGenerator
public BrownianMotionFromRandomNumberGenerator(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, RandomNumberGenerator randomNumberGenerator, RandomVariableFactory abstractRandomVariableFactory)
Construct a Brownian motion. The constructor allows to set the factory to be used for the construction of random variables. This allows to generate Brownian increments represented by different implementations of the RandomVariable (e.g. the RandomVariableFromFloatArray internally using float representations).- Parameters:
timeDiscretization- The time discretization used for the Brownian increments.numberOfFactors- Number of factors.numberOfPaths- Number of paths to simulate.randomNumberGenerator- A random number generator for n-dimensional uniform random numbers (n = numberOfTimeSteps*numberOfFactors).abstractRandomVariableFactory- Factory to be used to create random variable.
-
BrownianMotionFromRandomNumberGenerator
public BrownianMotionFromRandomNumberGenerator(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, RandomNumberGenerator randomNumberGenerator)
Construct a Brownian motion.- Parameters:
timeDiscretization- The time discretization used for the Brownian increments.numberOfFactors- Number of factors.numberOfPaths- Number of paths to simulate.randomNumberGenerator- A random number generator for n-dimensional uniform random numbers (n = numberOfTimeSteps*numberOfFactors).
-
-
Method Detail
-
getCloneWithModifiedSeed
public BrownianMotion getCloneWithModifiedSeed(int seed)
Description copied from interface:BrownianMotionReturn a new object implementing BrownianMotion having the same specifications as this object but a different seed for the random number generator. This method is useful if you like to make Monte-Carlo samplings by changing the seed.- Specified by:
getCloneWithModifiedSeedin interfaceBrownianMotion- Specified by:
getCloneWithModifiedSeedin interfaceIndependentIncrements- Parameters:
seed- New value for the seed.- Returns:
- New object implementing BrownianMotion.
-
getCloneWithModifiedTimeDiscretization
public BrownianMotion getCloneWithModifiedTimeDiscretization(TimeDiscretization newTimeDiscretization)
Description copied from interface:BrownianMotionReturn a new object implementing BrownianMotion having the same specifications as this object but a different time discretization.- Specified by:
getCloneWithModifiedTimeDiscretizationin interfaceBrownianMotion- Specified by:
getCloneWithModifiedTimeDiscretizationin interfaceIndependentIncrements- Parameters:
newTimeDiscretization- New time discretization- Returns:
- New object implementing BrownianMotion.
-
getBrownianIncrement
public RandomVariable getBrownianIncrement(int timeIndex, int factor)
Description copied from interface:BrownianMotionReturn the Brownian increment for a given timeIndex. The method returns the random variable Δ Wj(ti) := Wj(ti+1)-W(ti) for the given time index i and a given factor (index) j- Specified by:
getBrownianIncrementin interfaceBrownianMotion- Parameters:
timeIndex- The time index (corresponding to the this class's time discretization).factor- The index of the factor (independent scalar Brownian increment).- Returns:
- The factor (component) of the Brownian increments (a random variable).
-
getTimeDiscretization
public TimeDiscretization getTimeDiscretization()
Description copied from interface:BrownianMotionReturns the time discretization used for this set of time-discrete Brownian increments.- Specified by:
getTimeDiscretizationin interfaceBrownianMotion- Specified by:
getTimeDiscretizationin interfaceIndependentIncrements- Returns:
- The time discretization used for this set of time-discrete Brownian increments.
-
getNumberOfFactors
public int getNumberOfFactors()
Description copied from interface:BrownianMotionReturns the number of factors.- Specified by:
getNumberOfFactorsin interfaceBrownianMotion- Specified by:
getNumberOfFactorsin interfaceIndependentIncrements- Returns:
- The number of factors.
-
getNumberOfPaths
public int getNumberOfPaths()
Description copied from interface:BrownianMotionReturns the number of paths.- Specified by:
getNumberOfPathsin interfaceBrownianMotion- Specified by:
getNumberOfPathsin interfaceIndependentIncrements- Returns:
- The number of paths.
-
getRandomVariableForConstant
public RandomVariable getRandomVariableForConstant(double value)
Description copied from interface:BrownianMotionReturns a random variable which is initialized to a constant, but has exactly the same number of paths or discretization points as the ones used by this BrownianMotion.- Specified by:
getRandomVariableForConstantin interfaceBrownianMotion- Specified by:
getRandomVariableForConstantin interfaceIndependentIncrements- Parameters:
value- The constant value to be used for initialized the random variable.- Returns:
- A new random variable.
-
getIncrement
public RandomVariable getIncrement(int timeIndex, int factor)
Description copied from interface:IndependentIncrementsReturn the increment for a given timeIndex and given factor. The method returns the random variable Δ Xj(ti) := Xj(ti+1)-X(ti) for the given time index i and a given factor (index) j- Specified by:
getIncrementin interfaceIndependentIncrements- Parameters:
timeIndex- The time index (corresponding to the this class's time discretization)factor- The index of the factor (independent scalar increment)- Returns:
- The factor (component) of the increments (a random variable)
-
-