Isotropic random walk. More...
#include <ql/experimental/math/isotropicrandomwalk.hpp>
Public Types | |
typedef boost::variate_generator< Engine, Distribution > | VariateGenerator |
Public Member Functions | |
IsotropicRandomWalk (const Engine &eng, Distribution dist, Size dim, const Array &weights=Array(), unsigned long seed=0) | |
template<class InputIterator > | |
void | nextReal (InputIterator first) const |
void | setDimension (Size dim) |
void | setDimension (Size dim, const Array &weights) |
void | setDimension (Size dim, const Array &lowerBound, const Array &upperBound) |
Protected Attributes | |
VariateGenerator | variate_ |
MersenneTwisterUniformRng | rng_ |
Array | weights_ |
Size | dim_ |
Isotropic random walk.
A variate is used to draw from a random element of a probability distribution. The draw corresponds to the radius of a d-dimensional sphere. The position on the surface of the d-dimensional sphere is randomly chosen with all points on the surface having the same probability, i.e. all directions are isotropic and the step is randomly drawn from the given variate.
The isotropic random walk will not adjust its draw to be within the lower and upper bounds, but if the limits are provided, they are used to rescale the sphere so as to make it to an ellipsoid, with different radius in different dimensions.