Sacado Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
Sacado_Random.hpp
Go to the documentation of this file.
1// $Id$
2// $Source$
3// @HEADER
4// ***********************************************************************
5//
6// Sacado Package
7// Copyright (2006) Sandia Corporation
8//
9// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
10// the U.S. Government retains certain rights in this software.
11//
12// This library is free software; you can redistribute it and/or modify
13// it under the terms of the GNU Lesser General Public License as
14// published by the Free Software Foundation; either version 2.1 of the
15// License, or (at your option) any later version.
16//
17// This library is distributed in the hope that it will be useful, but
18// WITHOUT ANY WARRANTY; without even the implied warranty of
19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20// Lesser General Public License for more details.
21//
22// You should have received a copy of the GNU Lesser General Public
23// License along with this library; if not, write to the Free Software
24// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
25// USA
26// Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
27// (etphipp@sandia.gov).
28//
29// ***********************************************************************
30// @HEADER
31
32#ifndef SACADO_RANDOM_HPP
33#define SACADO_RANDOM_HPP
34
35#include "Sacado_ConfigDefs.h"
36
37#include <string>
38
39namespace Sacado {
40
45 template <typename ScalarT>
46 class Random {
47 public:
48
50 Random();
51
53 Random(ScalarT a_, ScalarT b_);
54
56 Random(ScalarT a_, ScalarT b_, int s);
57
59 ~Random();
60
62 void setSeed(int s);
63
65 ScalarT number();
66
67 protected:
68
69 // Check seed is valid
70 int checkSeed(const std::string& func, int s);
71
72 protected:
73
75 ScalarT a;
76
78 ScalarT b;
79
81 ScalarT seed;
82
83 }; // class Random
84
85} // namespace Sacdo
86
87#ifdef HAVE_SACADO_COMPLEX
88#include <complex>
89
90namespace Sacado {
91
97 template <typename T>
98 class Random< std::complex<T> > {
99 public:
100
102 Random();
103
105 Random(const std::complex<T>& a, const std::complex<T>& b);
106
108 Random(const std::complex<T>& a, const std::complex<T>& b, int s);
109
111 ~Random();
112
114 void setSeed(int s);
115
117 std::complex<T> number();
118
119 protected:
120
122 Random<T> rand_real;
123
125 Random<T> rand_imag;
126
127 }; // class Random
128
129} // namespace Sacado
130
131#endif // HAVE_SACADO_COMPLEX
132
133#include "Sacado_RandomImp.hpp"
134
135#endif // SACADO_RANDOM_HPP
const T func(int n, T *x)
Definition: ad_example.cpp:49
A random number generator that generates random numbers uniformly distributed in the interval (a,...
Random()
Constructor.
void setSeed(int s)
Set seed to s.
ScalarT a
Lower bound of interval.
~Random()
Destructor.
ScalarT seed
Random number seed
int checkSeed(const std::string &func, int s)
ScalarT b
Upper bound of interval.
ScalarT number()
Get random number.