QuantLib
: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
ql
math
randomnumbers
lecuyeruniformrng.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) 2000, 2001, 2002, 2003 RiskMap 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
/*! \file lecuyeruniformrng.hpp
21
\brief L'Ecuyer uniform random number generator
22
*/
23
24
#ifndef quantlib_lecuyer_uniform_rng_h
25
#define quantlib_lecuyer_uniform_rng_h
26
27
#include <
ql/methods/montecarlo/sample.hpp
>
28
#include <vector>
29
30
namespace
QuantLib
{
31
32
//! Uniform random number generator
33
/*! Random number generator of L'Ecuyer with added Bays-Durham
34
shuffle (know as ran2 in Numerical recipes)
35
36
For more details see Section 7.1 of Numerical Recipes in C, 2nd
37
Edition, Cambridge University Press (available at
38
http://www.nr.com/)
39
*/
40
class
LecuyerUniformRng
{
41
public
:
42
typedef
Sample<Real>
sample_type
;
43
/*! if the given seed is 0, a random seed will be chosen
44
based on clock() */
45
explicit
LecuyerUniformRng
(
long
seed = 0);
46
/*! returns a sample with weight 1.0 containing a random number
47
uniformly chosen from (0.0,1.0) */
48
sample_type
next
()
const
;
49
private
:
50
mutable
long
temp1
,
temp2
;
51
mutable
long
y
;
52
mutable
std::vector<long>
buffer
;
53
static
const
long
m1
;
54
static
const
long
a1
;
55
static
const
long
q1
;
56
static
const
long
r1
;
57
static
const
long
m2
;
58
static
const
long
a2
;
59
static
const
long
q2
;
60
static
const
long
r2
;
61
static
const
int
bufferSize
;
62
static
const
long
bufferNormalizer
;
63
static
const
long
double
maxRandom
;
64
};
65
66
}
67
68
69
#endif
QuantLib::LecuyerUniformRng
Uniform random number generator.
Definition:
lecuyeruniformrng.hpp:40
QuantLib::LecuyerUniformRng::y
long y
Definition:
lecuyeruniformrng.hpp:51
QuantLib::LecuyerUniformRng::a2
static const long a2
Definition:
lecuyeruniformrng.hpp:58
QuantLib::LecuyerUniformRng::m2
static const long m2
Definition:
lecuyeruniformrng.hpp:57
QuantLib::LecuyerUniformRng::m1
static const long m1
Definition:
lecuyeruniformrng.hpp:53
QuantLib::LecuyerUniformRng::maxRandom
static const long double maxRandom
Definition:
lecuyeruniformrng.hpp:63
QuantLib::LecuyerUniformRng::a1
static const long a1
Definition:
lecuyeruniformrng.hpp:54
QuantLib::LecuyerUniformRng::bufferSize
static const int bufferSize
Definition:
lecuyeruniformrng.hpp:61
QuantLib::LecuyerUniformRng::temp2
long temp2
Definition:
lecuyeruniformrng.hpp:50
QuantLib::LecuyerUniformRng::r1
static const long r1
Definition:
lecuyeruniformrng.hpp:56
QuantLib::LecuyerUniformRng::temp1
long temp1
Definition:
lecuyeruniformrng.hpp:50
QuantLib::LecuyerUniformRng::q1
static const long q1
Definition:
lecuyeruniformrng.hpp:55
QuantLib::LecuyerUniformRng::r2
static const long r2
Definition:
lecuyeruniformrng.hpp:60
QuantLib::LecuyerUniformRng::next
sample_type next() const
Definition:
lecuyeruniformrng.cpp:58
QuantLib::LecuyerUniformRng::bufferNormalizer
static const long bufferNormalizer
Definition:
lecuyeruniformrng.hpp:62
QuantLib::LecuyerUniformRng::q2
static const long q2
Definition:
lecuyeruniformrng.hpp:59
QuantLib::LecuyerUniformRng::sample_type
Sample< Real > sample_type
Definition:
lecuyeruniformrng.hpp:42
QuantLib::LecuyerUniformRng::buffer
std::vector< long > buffer
Definition:
lecuyeruniformrng.hpp:52
QuantLib
Definition:
any.hpp:35
sample.hpp
weighted sample
QuantLib::Sample
weighted sample
Definition:
sample.hpp:35
Generated by
Doxygen
1.9.5