NEURON
DiscUnif.h
Go to the documentation of this file.
1 // This may look like C code, but it is really -*- C++ -*-
2 /*
3 Copyright (C) 1988 Free Software Foundation
4  written by Dirk Grunwald (grunwald@cs.uiuc.edu)
5 
6 This file is part of the GNU C++ Library. This library is free
7 software; you can redistribute it and/or modify it under the terms of
8 the GNU Library General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your
10 option) any later version. This library is distributed in the hope
11 that it will be useful, but WITHOUT ANY WARRANTY; without even the
12 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13 PURPOSE. See the GNU Library General Public License for more details.
14 You should have received a copy of the GNU Library General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
17 */
18 #ifndef _DiscreteUniform_h
19 #ifdef __GNUG__
20 //#pragma interface
21 #endif
22 #define _DiscreteUniform_h 1
23 
24 #include <Random.h>
25 
26 //
27 // The interval [lo..hi)
28 //
29 
30 class DiscreteUniform: public Random {
31  long pLow;
32  long pHigh;
33  double delta;
34 public:
35  DiscreteUniform(long low, long high, RNG *gen);
36 
37  long low();
38  long low(long x);
39  long high();
40  long high(long x);
41 
42  virtual double operator()();
43 };
44 
45 
46 inline DiscreteUniform::DiscreteUniform(long low, long high, RNG *gen)
47 : Random(gen)
48 {
49  pLow = (low < high) ? low : high;
50  pHigh = (low < high) ? high : low;
51  delta = (pHigh - pLow) + 1;
52 }
53 
54 inline long DiscreteUniform::low() { return pLow; }
55 
56 inline long DiscreteUniform::low(long x) {
57  long tmp = pLow;
58  pLow = x;
59  delta = (pHigh - pLow) + 1;
60  return tmp;
61 }
62 
63 inline long DiscreteUniform::high() { return pHigh; }
64 
65 inline long DiscreteUniform::high(long x) {
66  long tmp = pHigh;
67  pHigh = x;
68  delta = (pHigh - pLow) + 1;
69  return tmp;
70 }
71 
72 #endif
DiscreteUniform(long low, long high, RNG *gen)
Definition: DiscUnif.h:46
long low()
Definition: DiscUnif.h:54
double delta
Definition: DiscUnif.h:33
long high()
Definition: DiscUnif.h:63
virtual double operator()()
Definition: DiscUnif.cpp:24
Definition: RNG.h:55
Definition: Random.h:32