00001 #if !defined (RANDOM_NUMBER_H) 00002 #define RANDOM_NUMBER_H 00003 #include "distributed_data.h" 00004 #include "distributions.h" 00005 #include <string> 00006 #include <vector> 00007 /***************************************************************/ 00009 class RandomNumber { 00010 private: 00011 int num_samples; 00012 double* sample_min; 00013 double* sample_max; 00014 double* sample_mean; 00015 double* sample_variance; 00016 00017 public: 00018 std::vector<double> *frequency_table; 00019 ddata::Vector samples; 00020 00021 //Constructor & Destructor 00022 RandomNumber(); 00023 RandomNumber(int num_samples); 00024 RandomNumber(int num_samples, int num_ghosts); 00025 ~RandomNumber(); 00026 void set_size(int num_samples); 00027 void set_ghost_size(int num_samples, int num_ghosts); 00028 00029 //Generated distributions 00030 void make_uniform(int seed) const; 00031 void make_normal(double mu, double sigma, int seed) const; 00032 00033 //Random number statisticis 00034 double mean(); 00035 double variance(); 00036 double min(); 00037 double max(); 00038 void create_frequency_table(int num_bins, bool normalized); 00039 void print_frequency_table(std::string file_name,int num_bins, Distribution& dist) const; 00040 double get_quantile(int alpha); 00041 00042 //Viewing and plotting 00043 void view(void) const; 00044 void print(std::string file_name) const; 00045 }; 00046 #endif