rand.h
Go to the documentation of this file.
00001 // g2o - General Graph Optimization
00002 // Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
00003 // 
00004 // g2o is free software: you can redistribute it and/or modify
00005 // it under the terms of the GNU Lesser General Public License as published
00006 // by the Free Software Foundation, either version 3 of the License, or
00007 // (at your option) any later version.
00008 // 
00009 // g2o is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 // GNU Lesser General Public License for more details.
00013 // 
00014 // You should have received a copy of the GNU Lesser General Public License
00015 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
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   } // end namespace
00073 } // end namespace
00074 
00075 #endif


re_vision
Author(s): Dorian Galvez-Lopez
autogenerated on Sun Jan 5 2014 11:32:17