QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
inversecumulativerng.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) 2003, 2004 Ferdinando Ametrano
5 Copyright (C) 2000, 2001, 2002, 2003 RiskMap srl
6
7 This file is part of QuantLib, a free-software/open-source library
8 for financial quantitative analysts and developers - http://quantlib.org/
9
10 QuantLib is free software: you can redistribute it and/or modify it
11 under the terms of the QuantLib license. You should have received a
12 copy of the license along with this program; if not, please email
13 <quantlib-dev@lists.sf.net>. The license is also available online at
14 <http://quantlib.org/license.shtml>.
15
16 This program is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18 FOR A PARTICULAR PURPOSE. See the license for more details.
19*/
20
21/*! \file inversecumulativerng.hpp
22 \brief Inverse cumulative Gaussian random-number generator
23*/
24
25#ifndef quantlib_inversecumulative_rng_h
26#define quantlib_inversecumulative_rng_h
27
29
30namespace QuantLib {
31
32 //! Inverse cumulative random number generator
33 /*! It uses a uniform deviate in (0, 1) as the source of cumulative
34 distribution values.
35 Then an inverse cumulative distribution is used to calculate
36 the distribution deviate.
37
38 The uniform deviate is supplied by RNG.
39
40 Class RNG must implement the following interface:
41 \code
42 RNG::sample_type RNG::next() const;
43 \endcode
44
45 The inverse cumulative distribution is supplied by IC.
46
47 Class IC must implement the following interface:
48 \code
49 IC::IC();
50 Real IC::operator() const;
51 \endcode
52 */
53 template <class RNG, class IC>
55 public:
57 typedef RNG urng_type;
58 explicit InverseCumulativeRng(const RNG& uniformGenerator);
59 //! returns a sample from a Gaussian distribution
60 sample_type next() const;
61 private:
64 };
65
66 template <class RNG, class IC>
68 : uniformGenerator_(ug) {}
69
70 template <class RNG, class IC>
73 typename RNG::sample_type sample = uniformGenerator_.next();
74 return sample_type(ICND_(sample.value),sample.weight);
75 }
76
77}
78
79
80#endif
Inverse cumulative random number generator.
sample_type next() const
returns a sample from a Gaussian distribution
InverseCumulativeRng(const RNG &uniformGenerator)
Definition: any.hpp:35
weighted sample
weighted sample
Definition: sample.hpp:35