00001 /*************************************************************************** 00002 * Copyright (C) 2007 by Pablo Diaz-Gutierrez * 00003 * pablo@ics.uci.edu * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU Library General Public License as * 00007 * published by the Free Software Foundation; either version 2 of the * 00008 * License, or (at your option) any later version. * 00009 * * 00010 * This program is distributed in the hope that it will be useful, * 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00013 * GNU General Public License for more details. * 00014 * * 00015 * You should have received a copy of the GNU Library General Public * 00016 * License along with this program; if not, write to the * 00017 * Free Software Foundation, Inc., * 00018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 00019 ***************************************************************************/ 00020 00021 #include <math.h> 00022 #include <cassert> 00023 #include "util.h" 00024 00025 00026 using namespace std; 00027 00028 00029 double HE::rangerand(double min, double max, long steps) 00030 { 00031 assert (max > min); 00032 return min + ((rand() % steps) * (max - min)) / steps; 00033 } 00034 00035 00036 double HE::gaussianrand(double min, double max, long steps) 00037 { 00038 assert (max > min); 00039 double halfinterval = (max - min)/2; 00040 double center = min + halfinterval; 00041 double factor = rangerand(0, 2*M_PI, steps); 00042 double value = cos(factor)*sin(factor); 00043 00044 return center + value*halfinterval; 00045 } 00046