📄 distributions.h
字号:
/* $Id: distributions.h,v 1.2 2006-08-09 15:20:54 jonathan Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2005. All rights reserved. */#ifndef DISTRIBUTIONS_H_#define DISTRIBUTIONS_H_#include <map>#include <vector>//#include "randlib.h"#include "math_util.h"using namespace::std;class Distribution {public: Distribution () {} ~Distribution () {} virtual double next () { return 0.;} virtual double getMean () { return 0.;} virtual char getName () {return ' ';}};class IntegerDistribution {public: IntegerDistribution () {} ~IntegerDistribution () {} virtual int next () { return 0;} virtual double getMean () { return 0.;} virtual char getName () {return ' ';}};class ParetoDistribution : public Distribution {private: double scale; double shape;public: ParetoDistribution (double sc, double sh) {this->scale = sc; this->shape = sh;} ~ParetoDistribution () {} double next (); double getMean (); char getName () { return 'p';};};class NormalDistribution : public Distribution {private: double mean; double stddev;public: NormalDistribution (double m, double s) {this->mean = m; this->stddev = s;} ~NormalDistribution () {} double next (); double getMean (); char getName () { return 'n';};};class ZipfDistribution : public Distribution {private: const double alpha; const int elements; double c; // Normalization constantpublic: ZipfDistribution (double a, int n); ~ZipfDistribution () {} double next (); double getMean (); char getName () { return 'z';}; map<double,double> zipfKeys;};class ZipfIntegerDistribution : public IntegerDistribution {private: double alpha; int elements; double c; // Normalization constantpublic: ZipfIntegerDistribution (double a, int n); ~ZipfIntegerDistribution () {} int next (); double getMean (); char getName () { return 'z';}; map<double,int> zipfKeys;};class UniformDistribution : public Distribution {private:public: UniformDistribution () {} ~UniformDistribution () {} double next (); double getMean (); char getName () { return 'u';};};class UniformIntegerDistribution : public IntegerDistribution {private: const int maxElement;public: UniformIntegerDistribution (int _maxElement) : maxElement(_maxElement) {} ~UniformIntegerDistribution () {} int next (); double getMean (); char getName () { return 'u';};};class GnutellaBWDistribution : public Distribution {private:public: GnutellaBWDistribution () {} ~GnutellaBWDistribution () {} double next (); double getMean (); char getName () { return 'g';};};class PoissonDistribution : public Distribution {private: double mean;public: PoissonDistribution (double m) {this->mean = m;} ~PoissonDistribution () {} double next (); double getMean (); char getName () { return 'f';};};class ConstantDistribution : public Distribution {private: double value;public: ConstantDistribution (double c) {this->value = c;} ~ConstantDistribution () {} double next (); double getMean (); char getName () { return 'c';};};class DistributionFactory {public: DistributionFactory () {} ~DistributionFactory () {} Distribution* newDistribution (char *str); IntegerDistribution* newIntegerDistribution (char *str);};void getParameters (char *str, char &distType, float ¶1, float ¶2);double snorm();#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -