QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
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
28#include <vector>
29
30namespace 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 */
41 public:
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
Uniform random number generator.
static const long double maxRandom
static const long bufferNormalizer
Definition: any.hpp:35
weighted sample
weighted sample
Definition: sample.hpp:35