TORCS  1.3.10
The Open Racing Car Simulator
Loading...
Searching...
No Matches
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
19void setRandomSeed(unsigned int seed);
22
25 public:
27 virtual ~Distribution() {}
28 virtual real generate() = 0;
29 virtual real pdf(real x) = 0;
30};
31
35public:
38 virtual void setVariance (real var) = 0;
39 virtual void setMean (real mean) = 0;
40};
41
42
45public:
51 virtual ~DiscreteDistribution();
52 virtual real generate();
53 virtual real pdf(real x);
54};
55
58private:
59 bool cache;
61public:
64 NormalDistribution() {m=0.0; s=1.0; cache = false;}
67 {
68 setMean (mean);
69 setVariance (std*std);
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
82public:
85 UniformDistribution() {m=0.0; s=1.0;}
88 {
89 setMean (mean);
90 setVariance (std*std);
91 }
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
104public:
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
130public:
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
155public:
156 int d;
160 {
161 this->d = d;
162 }
164 virtual real generate();
165 virtual real pdf(real x);
166};
167
168
169#endif
Scalar min(Scalar x, Scalar y)
Definition Basic.h:49
Scalar max(Scalar x, Scalar y)
Definition Basic.h:50
real urandom()
return a number drawn uniformly from [0,1]
void setRandomSeed(unsigned int seed)
virtual real pdf(real x)
int n_outcomes
number of possible outcomes
real * p
probabilities of outcomes
virtual ~DiscreteDistribution()
virtual real generate()
virtual ~Distribution()
virtual real pdf(real x)=0
return the density at point x
virtual real generate()=0
generate a value from this distribution
virtual void setMean(real mean)
ExponentialDistribution(real mean, real var)
ExponentialDistribution(real lambda)
Create an exponential distribution with parameter lambda.
virtual ~ExponentialDistribution()
virtual real pdf(real x)
virtual void setVariance(real var)
virtual void setVariance(real var)
virtual real generate()
LaplacianDistribution(real lambda)
Create a Laplacian distribution with parameter lambda.
virtual ~LaplacianDistribution()
LaplacianDistribution(real mean, real var)
virtual void setMean(real mean)
virtual real pdf(real x)
MultinomialGaussian(int d)
create a multinomial with d dimensions
virtual real generate()
int d
number of dimensions
virtual real pdf(real x)
virtual ~MultinomialGaussian()
NormalDistribution(real mean, real std)
Normal dist. with given mean and std.
virtual void setMean(real mean)
virtual real generate()
virtual void setVariance(real var)
virtual real pdf(real x)
real s
standard deviation
virtual ~NormalDistribution()
virtual ~ParametricDistribution()
virtual void setMean(real mean)=0
set the mean
virtual void setVariance(real var)=0
set the variance
virtual ~UniformDistribution()
virtual void setVariance(real var)
virtual real generate()
UniformDistribution(real mean, real std)
Create a uniform distribution with mean mean and standard deviation std.
real s
standard deviation
virtual real pdf(real x)
virtual void setMean(real mean)
float real
Definition real.h:13