TORCS  1.3.9
The Open Racing Car Simulator
Distribution.h
Go to the documentation of this file.
1 /* -*- Mode: C++; -*- */
2 /* VER: $Id$*/
3 // copyright (c) 2004 by Christos Dimitrakakis <dimitrak@idiap.ch>
4 /***************************************************************************
5  * *
6  * This program is free software; you can redistribute it and/or modify *
7  * it under the terms of the GNU General Public License as published by *
8  * the Free Software Foundation; either version 2 of the License, or *
9  * (at your option) any later version. *
10  * *
11  ***************************************************************************/
12 
13 #ifndef DISTRIBUTION_H
14 #define DISTRIBUTION_H
15 
16 #include <learning/real.h>
17 #include <cmath>
18 
19 void setRandomSeed(unsigned int seed);
20 real urandom();
22 
24 class Distribution {
25  public:
27  virtual ~Distribution() {}
28  virtual real generate() = 0;
29  virtual real pdf(real x) = 0;
30 };
31 
35 public:
38  virtual void setVariance (real var) = 0;
39  virtual void setMean (real mean) = 0;
40 };
41 
42 
45 public:
46  int n_outcomes;
47  real* p;
50  DiscreteDistribution(int N);
51  virtual ~DiscreteDistribution();
52  virtual real generate();
53  virtual real pdf(real x);
54 };
55 
58 private:
59  bool cache;
61 public:
62  real m;
63  real s;
64  NormalDistribution() {m=0.0; s=1.0; cache = false;}
67  {
68  setMean (mean);
70  }
71  virtual ~NormalDistribution() { }
72  virtual real generate();
73  virtual real pdf(real x);
74  virtual void setVariance (real var)
75  {s = sqrt(var);}
76  virtual void setMean (real mean)
77  {m = mean;}
78 };
79 
82 public:
83  real m;
84  real s;
85  UniformDistribution() {m=0.0; s=1.0;}
88  {
89  setMean (mean);
91  }
92  virtual ~UniformDistribution() {}
93  virtual real generate();
94  virtual real pdf(real x);
95  virtual void setVariance (real var)
96  {s = sqrt(12.0 * var);}
97  virtual void setMean (real mean)
98  {m = mean;}
99 };
100 
101 
104 public:
105  real l;
106  real m;
107  LaplacianDistribution() {m=0.0;l=1.0;}
110  {
111  m = 0.0;
112  l = lambda;
113  }
115  {
116  setMean (mean);
117  setVariance (var);
118  }
120  virtual real generate();
121  virtual real pdf(real x);
122  virtual void setVariance (real var)
123  {l = sqrt(0.5 / var);}
124  virtual void setMean (real mean)
125  {m = mean;}
126 };
127 
130 public:
131  real l;
132  real m;
136  {
137  l = lambda;
138  }
140  {
141  setMean(mean);
142  setVariance(var);
143  }
145  virtual real generate();
146  virtual real pdf(real x);
147  virtual void setVariance (real var)
148  {l = sqrt(1.0 / var);}
149  virtual void setMean (real mean)
150  {m = mean;}
151 };
152 
155 public:
156  int d;
160  {
161  this->d = d;
162  }
163  virtual ~MultinomialGaussian() {}
164  virtual real generate();
165  virtual real pdf(real x);
166 };
167 
168 
169 #endif
real urandom()
return a number drawn uniformly from [0,1]
virtual ~UniformDistribution()
Definition: Distribution.h:92
Parametric distribution.
Definition: Distribution.h:34
virtual void setMean(real mean)=0
set the mean
Scalar max(Scalar x, Scalar y)
Definition: Basic.h:50
virtual real pdf(real x)
virtual void setVariance(real var)
Definition: Distribution.h:95
virtual void setVariance(real var)
Definition: Distribution.h:122
Laplacian probability distribution.
Definition: Distribution.h:103
virtual void setMean(real mean)
Definition: Distribution.h:124
real s
standard deviation
Definition: Distribution.h:84
virtual real generate()
real * p
probabilities of outcomes
Definition: Distribution.h:47
int n_outcomes
number of possible outcomes
Definition: Distribution.h:46
LaplacianDistribution(real lambda)
Create a Laplacian distribution with parameter lambda.
Definition: Distribution.h:109
Discrete probability distribution.
Definition: Distribution.h:44
void setRandomSeed(unsigned int seed)
MultinomialGaussian(int d)
create a multinomial with d dimensions
Definition: Distribution.h:159
virtual real pdf(real x)
virtual real pdf(real x)=0
return the density at point x
virtual real pdf(real x)
virtual void setVariance(real var)
Definition: Distribution.h:147
virtual real generate()
virtual ~ExponentialDistribution()
Definition: Distribution.h:144
NormalDistribution(real mean, real std)
Normal dist. with given mean and std.
Definition: Distribution.h:66
virtual real generate()
UniformDistribution(real mean, real std)
Create a uniform distribution with mean mean and standard deviation std.
Definition: Distribution.h:87
int d
number of dimensions
Definition: Distribution.h:156
ExponentialDistribution(real mean, real var)
Definition: Distribution.h:139
LaplacianDistribution(real mean, real var)
Definition: Distribution.h:114
virtual void setMean(real mean)
Definition: Distribution.h:97
virtual ~MultinomialGaussian()
Definition: Distribution.h:163
virtual real generate()
Uniform probability distribution.
Definition: Distribution.h:81
virtual ~ParametricDistribution()
Definition: Distribution.h:37
ExponentialDistribution(real lambda)
Create an exponential distribution with parameter lambda.
Definition: Distribution.h:135
virtual real pdf(real x)
virtual real pdf(real x)
Gaussian probability distribution.
Definition: Distribution.h:57
Exponential probability distribution.
Definition: Distribution.h:129
real s
standard deviation
Definition: Distribution.h:63
Scalar min(Scalar x, Scalar y)
Definition: Basic.h:49
virtual ~DiscreteDistribution()
virtual ~LaplacianDistribution()
Definition: Distribution.h:119
Multinomial gaussian probability distribution.
Definition: Distribution.h:154
virtual ~Distribution()
Definition: Distribution.h:27
virtual void setVariance(real var)=0
set the variance
virtual void setMean(real mean)
Definition: Distribution.h:76
virtual ~NormalDistribution()
Definition: Distribution.h:71
virtual real pdf(real x)
virtual real generate()
virtual real generate()=0
generate a value from this distribution
virtual void setMean(real mean)
Definition: Distribution.h:149
virtual void setVariance(real var)
Definition: Distribution.h:74
float real
Definition: real.h:13
Probability distribution.
Definition: Distribution.h:24
virtual real generate()