Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef RAND_HH
00018 #define RAND_HH
00019
00020 #include <cstdlib>
00021 #include <cmath>
00022 #include <ctime>
00023
00024 namespace g2o {
00025
00026 namespace tutorial {
00027
00031 class Rand
00032 {
00033 public:
00038 static double gauss_rand(double mean, double sigma)
00039 {
00040 double x, y, r2;
00041 do {
00042 x = -1.0 + 2.0 * uniform_rand(0.0, 1.0);
00043 y = -1.0 + 2.0 * uniform_rand(0.0, 1.0);
00044 r2 = x * x + y * y;
00045 } while (r2 > 1.0 || r2 == 0.0);
00046 return mean + sigma * y * std::sqrt(-2.0 * log(r2) / r2);
00047 }
00048
00052 static double uniform_rand(double lowerBndr, double upperBndr)
00053 {
00054 return lowerBndr + ((double) std::rand() / (RAND_MAX + 1.0)) * (upperBndr - lowerBndr);
00055 }
00056
00060 static void seed_rand()
00061 {
00062 seed_rand(std::time(NULL));
00063 }
00064
00066 static void seed_rand(unsigned int seed)
00067 {
00068 std::srand(seed);
00069 }
00070 };
00071
00072 }
00073 }
00074
00075 #endif