QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
mtbrowniangenerator.hpp
Go to the documentation of this file.
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2006 StatPro Italia srl
5
6 This file is part of QuantLib, a free-software/open-source library
7 for financial quantitative analysts and developers - http://quantlib.org/
8
9 QuantLib is free software: you can redistribute it and/or modify it
10 under the terms of the QuantLib license. You should have received a
11 copy of the license along with this program; if not, please email
12 <quantlib-dev@lists.sf.net>. The license is also available online at
13 <http://quantlib.org/license.shtml>.
14
15 This program is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the license for more details.
18*/
19
20
21#ifndef quantlib_mt_brownian_generator_hpp
22#define quantlib_mt_brownian_generator_hpp
23
28
29namespace QuantLib {
30
31 //! Mersenne-twister Brownian generator for market-model simulations
32 /*! Incremental Brownian generator using a Mersenne-twister
33 uniform generator and inverse-cumulative Gaussian method.
34
35 \note At this time, generation of the underlying uniform
36 sequence is eager, while its transformation into
37 Gaussian variates is lazy. Further optimization might
38 be possible by using the Mersenne twister directly
39 instead of a RandomSequenceGenerator; however, it is not
40 clear how much of a difference this would make when
41 compared to the inverse-cumulative Gaussian calculation.
42 */
44 public:
46 Size steps,
47 unsigned long seed = 0);
48
49 Real nextStep(std::vector<Real>&) override;
50 Real nextPath() override;
51
52 Size numberOfFactors() const override;
53 Size numberOfSteps() const override;
54
55 private:
60 };
61
63 public:
64 MTBrownianGeneratorFactory(unsigned long seed = 0);
65 ext::shared_ptr<BrownianGenerator> create(Size factors, Size steps) const override;
66
67 private:
68 unsigned long seed_;
69 };
70
71}
72
73
74#endif
Inverse cumulative normal distribution function.
ext::shared_ptr< BrownianGenerator > create(Size factors, Size steps) const override
Mersenne-twister Brownian generator for market-model simulations.
RandomSequenceGenerator< MersenneTwisterUniformRng > generator_
Real nextStep(std::vector< Real > &) override
Size numberOfFactors() const override
Size numberOfSteps() const override
InverseCumulativeNormal inverseCumulative_
Random sequence generator based on a pseudo-random number generator.
QL_REAL Real
real number
Definition: types.hpp:50
std::size_t Size
size of a container
Definition: types.hpp:58
Mersenne Twister uniform random number generator.
Definition: any.hpp:35
normal, cumulative and inverse cumulative distributions
Random sequence generator based on a pseudo-random number generator.