distributions.h

来自「题描述的是一个旅行商要到几个城市去」· C头文件 代码 · 共 154 行

H
154
字号
/* $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 &para1, float &para2);double snorm();#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?