亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? newran.cpp

?? 這是cdma2000的一個(gè)分組調(diào)度算法實(shí)例
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// newran.cpp -----------------------------------------------------------

// NEWRAN02

#define WANT_STREAM
#define WANT_MATH
#include "Include.h"

#include "newran.h"
//#include "mother.h"

#ifdef use_namespace
namespace NEWRAN {
#endif

//********* classes which are used internally only **********************

//*********** chi-square-1 random number generator **********************

class ChiSq1 : public Normal              // generate non-central chi-square
					  // rv with 1 degree of freedom
{
   Real deltasq;                          // non-centrality parameter
   Real delta;

public:
   ChiSq1(Real);                          // non-centrality parameter
   ExtReal Mean() const { return 1.0+deltasq; }
   ExtReal Variance() const { return 2.0+4.0*deltasq; }
   Real Next();
};

//*********** Poisson random number generator, larger mu ****************

class Poisson1 : public AsymGen           // generate poisson rv, large mu
{
   Real mu, ln_mu;
public:
   Poisson1(Real);                        // constructor (Real=mean)
   Real Density(Real) const;              // Poisson density function
   Real Next() { return floor(AsymGen::Next()); }
   ExtReal Mean() const { return mu; }
   ExtReal Variance() const { return mu; }
};

//*********** Poisson random number generator, mu <= 10 ****************

class Poisson2 : public Random            // generate poisson rv, large mu
{
   DiscreteGen* dg;
public:
   Poisson2(Real);                        // constructor (Real=mean)
   ~Poisson2();
   Real Next() { return dg->Next(); }
   ExtReal Mean() const { return dg->Mean(); }
   ExtReal Variance() const { return dg->Variance(); }
};

//********** Gamma random number generator, alpha <= 1 *****************

class Gamma1 : public PosGen              // generate gamma rv
					  // shape parameter <= 1
{
   Real ln_gam, ralpha, alpha;
public:
   Gamma1(Real);                          // constructor (Real=shape)
   Real Density(Real) const;              // gamma density function
   Real Next();                           // carries out power transform
   ExtReal Mean() const { return alpha; }
   ExtReal Variance() const { return alpha; }
};

//********** Gamma random number generator, alpha > 1 ******************

class Gamma2 : public AsymGen             // generate gamma rv
					  // shape parameter > 1
{
   Real alpha, ln_gam;
public:
   Gamma2(Real);                          // constructor (Real=shape)
   Real Density(Real) const;              // gamma density function
   ExtReal Mean() const { return alpha; }
   ExtReal Variance() const { return alpha; }
};

//*********** Binomial random number generator, n > 40 *****************

class Binomial1 : public AsymGen           // generate binomial rv, larger n
{
   Real p, q, ln_p, ln_q, ln_n_fac; int n;
public:
   Binomial1(int nx, Real px);
   Real Density(Real) const;
   Real Next() { return floor(AsymGen::Next()); }
   ExtReal Mean() const { return p * n; }
   ExtReal Variance() const { return p * q * n; }
};

//******* Binomial random number generator, n < 40 or n*p <= 8 *************

class Binomial2 : public Random            // generate binomial rv, smaller n
{
   DiscreteGen* dg;
public:
   Binomial2(int nx, Real px);
   ~Binomial2();
   Real Next() { return dg->Next(); }
   ExtReal Mean() const { return dg->Mean(); }
   ExtReal Variance() const { return dg->Variance(); }
};

//************************ static variables ***************************

double Random::seed;
//unsigned long Random::iseed;                // for Mother
Real Random::Buffer[128];
Real Normal::Nxi;
Real* Normal::Nsx;
Real* Normal::Nsfx;
long Normal::count=0;

//**************************** utilities ******************************

inline Real square(Real x) { return x*x; }
inline ExtReal square(const ExtReal& x) { return x*x; }

static void ErrorNoSpace() { Throw(Bad_alloc("Newran: out of space")); }

//************************* end of definitions ************************


Real Random::Raw()                           // get new uniform random number
{
   // m = 2147483647 = 2^31 - 1; a = 16807;
   // 127773 = m div a; 2836 = m mod a
   long iseed = (long)seed;
   long hi = iseed / 127773L;                 // integer division
   long lo = iseed - hi * 127773L;            // modulo
   iseed = 16807 * lo - 2836 * hi;
   if (iseed <= 0) iseed += 2147483647L;
   seed = (double)iseed; return seed*4.656612875e-10;
}

Real Random::Density(Real) const
{ Throw(Logic_error("density function not defined")); return 0.0; }

#ifdef _MSC_VER
static void DoNothing(int) {}
#endif

Real Random::Next()                          // get new mixed random number
{
   if (!seed)
      Throw(Logic_error("Random number generator not initialised"));
   int i = (int)(Raw()*128);               // 0 <= i < 128
#ifdef _MSC_VER
   DoNothing(i); DoNothing(i);
#endif
   Real f = Buffer[i]; Buffer[i] = Raw();  // Microsoft release gets this wrong
   return f;

   // return Mother(&iseed);
}

double Random::Get()                  // get random number seed
{ return seed/2147483648L; }

void Random::Set(double s)            // set random number seed
                                      // s must be between 0 and 1
{
   if (s>=1.0 || s<=0.0)
      Throw(Logic_error("Newran: seed out of range"));
   //iseed = 2147483648L * s;         // for Mother
   seed = (long)(s*2147483648L);
   for (int i = 0; i<128; i++) Buffer[i] = Raw();
}


PosGen::PosGen()                             // Constructor
{
   #ifdef MONITOR
      cout << "constructing PosGen\n";
   #endif
   NotReady=true;
}

PosGen::~PosGen()
{
   if (!NotReady)
   {
      #ifdef MONITOR
	 cout << "freeing PosGen arrays\n";
      #endif
      delete [] sx; delete [] sfx;
   }
   #ifdef MONITOR
      cout << "destructing PosGen\n";
   #endif
}

void PosGen::Build(bool sym)                 // set up arrays
{
   #ifdef MONITOR
      cout << "building PosGen arrays\n";
   #endif
   int i;
   NotReady=false;
   sx=new Real[60]; sfx=new Real[60];
   if (!sx || !sfx) ErrorNoSpace();
   Real sxi=0.0; Real inc = sym ? 0.01 : 0.02;
   for (i=0; i<60; i++)
   {
      sx[i]=sxi; Real f1=Density(sxi); sfx[i]=f1;
      if (f1<=0.0) goto L20;
      sxi+=inc/f1;
   }
   Throw(Runtime_error("Newran: area too large"));
L20:
   if (i<50) Throw(Runtime_error("Newran: area too small"));
   xi = sym ? 2*i : i;
   return;
}


Geometry::Geometry(Real p):p(p)
{
	mean=1.0/p;
	var=(1.0-p)/(p*p);
}

int Geometry::iNext()
{
//	Real newval=log(1.0-Random::Next())/log((Real)1.0-p)+1.0;
//	return (int)newval;
	Uniform U;//(0,1)均勻分布
  	Real Uk,pk,plow,phigh;//plow,phigh分別代表概率區(qū)間的下限和上限
  	int Ak;//返回結(jié)果
  	plow=0.;
  	phigh=p;
	pk=p;
  	Uk=U.Next();
  	if ((Uk>0.)&&(Uk<=phigh))
		Ak=1;
	else
	{
		int i=1;
		do
		{
			i++;
			plow=phigh;
			pk*=1-p;
			phigh+=pk;
		}
		while (!((Uk>plow)&&(Uk<phigh)));
		Ak=i+1;
	}
	return Ak;
}

Real PosGen::Next()
{
   Real ak,y; int ir;
   if (NotReady) Build(false);
   do
   {
      Real r1=Random::Next();
      ir = (int)(r1*xi); Real sxi=sx[ir];
      ak=sxi+(sx[ir+1]-sxi)*Random::Next();
      y=sfx[ir]*Random::Next();
   }
   while ( y>=sfx[ir+1] && y>=Density(ak) );
   return ak;
}

Real SymGen::Next()
{
   Real s,ak,y; int ir;
   if (NotReady) Build(true);
   do
   {
      s=1.0;
      Real r1=Random::Next();
      if (r1>0.5) { s=-1.0; r1=1.0-r1; }
      ir = (int)(r1*xi); Real sxi=sx[ir];
      ak=sxi+(sx[ir+1]-sxi)*Random::Next();
      y=sfx[ir]*Random::Next();
   }
   while ( y>=sfx[ir+1] && y>=Density(ak) );
   return s*ak;
}

AsymGen::AsymGen(Real modex)                 // Constructor
{
   #ifdef MONITOR
      cout << "constructing AsymGen\n";
   #endif
   mode=modex; NotReady=true;
}

void AsymGen::Build()                        // set up arrays
{
   #ifdef MONITOR
      cout << "building AsymGen arrays\n";
   #endif
   int i;
   NotReady=false;
   sx=new Real[121]; sfx=new Real[121];
   if (!sx || !sfx)  ErrorNoSpace();
   Real sxi=mode;
   for (i=0; i<120; i++)
   {
      sx[i]=sxi; Real f1=Density(sxi); sfx[i]=f1;
      if (f1<=0.0) goto L20;
      sxi+=0.01/f1;
   }
   Throw(Runtime_error("Newran: area too large (a)"));
L20:
   ic=i-1; sx[120]=sxi; sfx[120]=0.0;
   sxi=mode;
   for (; i<120; i++)
   {
      sx[i]=sxi; Real f1=Density(sxi); sfx[i]=f1;
      if (f1<=0.0) goto L30;
      sxi-=0.01/f1;
   }
   Throw(Runtime_error("Newran: area too large (b)"));
L30:
   if (i<100)  Throw(Runtime_error("Newran: area too small"));
   xi=i;
   return;
}

Real AsymGen::Next()
{
   Real ak,y; int ir1;
   if (NotReady) Build();
   do
   {
      Real r1=Random::Next();
      int ir=(int)(r1*xi); Real sxi=sx[ir];
      ir1 = (ir==ic) ? 120 : ir+1;
      ak=sxi+(sx[ir1]-sxi)*Random::Next();
      y=sfx[ir]*Random::Next();
   }
   while ( y>=sfx[ir1] && y>=Density(ak) );
   return ak;
}

AsymGen::~AsymGen()
{
   if (!NotReady)
   {
      #ifdef MONITOR
	 cout << "freeing AsymGen arrays\n";
      #endif
      delete [] sx; delete [] sfx;
   }
   #ifdef MONITOR
      cout << "destructing AsymGen\n";
   #endif
}

PosGenX::PosGenX(PDF fx) { f=fx; }

SymGenX::SymGenX(PDF fx) { f=fx; }

AsymGenX::AsymGenX(PDF fx, Real mx) : AsymGen(mx) { f=fx; }


Normal::Normal()
{
   if (count) { NotReady=false; xi=Nxi; sx=Nsx; sfx=Nsfx; }
   else { Build(true); Nxi=xi; Nsx=sx; Nsfx=sfx; }
   count++;
}

Normal::~Normal()
{
   count--;
   if (count) NotReady=true;                     // disable freeing arrays
}

Real Normal::Density(Real x) const               // normal density
{ return (fabs(x)>8.0) ? 0 : 0.398942280 * exp(-x*x / 2); }

ChiSq1::ChiSq1(Real d) : Normal()                // chisquare with 1 df
{ deltasq=d; delta=sqrt(d); }

Real ChiSq1::Next()
{ Real z=Normal::Next()+delta; return z*z; }

ChiSq::ChiSq(int df, Real noncen)
{
  if (df<=0 || noncen<0.0) Throw(Logic_error("Newran: illegal parameters"));
  else if (df==1) { version=0; c1=new ChiSq1(noncen); }
  else if (noncen==0.0)
  {
     if (df==2) { version=1; c1=new Exponential(); }
     else { version=2; c1=new Gamma2(0.5*df); }
  }
  else if (df==2) { version=3; c1=new ChiSq1(noncen/2.0); }
  else if (df==3) { version=4; c1=new Exponential(); c2=new ChiSq1(noncen); }
  else { version=5; c1=new Gamma2(0.5*(df-1)); c2=new ChiSq1(noncen); }
  if (!c1 || (version>3 && !c2)) ErrorNoSpace();
  mean=df+noncen; var=2*df+4.0*noncen;
}

ChiSq::~ChiSq() { delete c1; if (version>3) delete c2; }

Real ChiSq::Next()
{
   switch(version)
   {
   case 0: return c1->Next();
   case 1: case 2: return c1->Next()*2.0;
   case 3: return c1->Next() + c1->Next();
   case 4: case 5: Real s1 = c1->Next()*2.0; Real s2 = c2->Next();
	   return s1 + s2; // this is to make it work with Microsoft VC5
   }
   return 0;
}

Pareto::Pareto(Real shape,Real scale) : Shape(shape),Scale(scale)
{
   if (Shape <= 0) Throw(Logic_error("Newran: illegal parameter"));
   RS = -1.0 / Shape;
}

Real Pareto::Next()
{ return Scale*pow(Random::Next(), RS); }

ExtReal Pareto::Mean() const
{
   if (Shape > 1) return Scale*Shape/(Shape-1.0);
   else return PlusInfinity;
}

ExtReal Pareto::Variance() const
{
   if (Shape > 2) return Scale*Scale*Shape/(square(Shape-1.0))/(Shape-2.0);
   else return PlusInfinity;
}

Real Cauchy::Density(Real x) const               // Cauchy density function
{ return (fabs(x)>1.0e15) ? 0 : 0.31830988618 / (1.0+x*x); }

Poisson1::Poisson1(Real mux) : AsymGen(mux)      // Constructor
{ mu=mux; ln_mu=log(mu); }

Real Poisson1::Density(Real x) const             // Poisson density function
{
   if (x < 0.0) return 0.0;
   double ix = floor(x);                         // use integer part
   double l = ln_mu * ix - mu - ln_gamma(1.0 + ix);
   return  (l < -40.0) ? 0.0 : exp(l);
}

Binomial1::Binomial1(int nx, Real px)
   : AsymGen((nx + 1) * px), p(px), q(1.0 - px), n(nx)
      { ln_p = log(p); ln_q = log(q); ln_n_fac = ln_gamma(n+1); }

Real Binomial1::Density(Real x) const            // Binomial density function
{
   double ix = floor(x);                         // use integer part
   if (ix < 0.0 || ix > n) return 0.0;
   double l = ln_n_fac - ln_gamma(ix+1) - ln_gamma(n-ix+1)
      + ix * ln_p + (n-ix) * ln_q;
   return  (l < -40.0) ? 0.0 : exp(l);
}

Poisson2::Poisson2(Real mux)
{
   Real probs[40];
   probs[0]=exp(-mux);
   for (int i=1; i<40; i++) probs[i]=probs[i-1]*mux/i;
   dg=new DiscreteGen(40,probs);
   if (!dg) ErrorNoSpace();
}

Poisson2::~Poisson2() { delete dg; }

Binomial2::Binomial2(int nx, Real px)
{
   Real qx = 1.0 - px;
   Real probs[40];

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品久久99| 久久男人中文字幕资源站| 国产在线视视频有精品| 亚洲欧美成aⅴ人在线观看| 精品sm在线观看| 欧美三级日韩在线| 91在线免费播放| 激情文学综合插| 午夜精品久久一牛影视| 综合久久久久久| 国产色婷婷亚洲99精品小说| 51午夜精品国产| 欧洲精品在线观看| www.欧美.com| 国产福利一区二区三区视频 | 欧美日韩国产高清一区| 不卡欧美aaaaa| 国产剧情一区二区| 奇米在线7777在线精品| 亚洲一区二区影院| 亚洲精品乱码久久久久久久久| 久久尤物电影视频在线观看| 91精品国产91热久久久做人人 | 久久久亚洲综合| 欧美一区二区国产| 欧美丰满少妇xxxxx高潮对白| 色婷婷精品大在线视频| 99久久精品费精品国产一区二区| 国产成人午夜精品5599| 狠狠色丁香婷综合久久| 久久精品国产亚洲高清剧情介绍 | 91网页版在线| 91亚洲资源网| 99re成人在线| 91免费版pro下载短视频| 波多野结衣的一区二区三区| 成人美女在线观看| av中文字幕不卡| 一本一道综合狠狠老| 色综合久久88色综合天天免费| 99精品国产热久久91蜜凸| 99精品欧美一区二区蜜桃免费| 波多野结衣中文字幕一区二区三区| 国产精品羞羞答答xxdd | 欧美高清视频不卡网| 9191久久久久久久久久久| 欧美精品色一区二区三区| 欧美肥妇bbw| 欧美mv日韩mv亚洲| 久久九九久精品国产免费直播| 国产色91在线| 亚洲色图欧美激情| 亚洲综合色视频| 丝袜国产日韩另类美女| 免费欧美高清视频| 国产毛片精品国产一区二区三区| 国产福利精品导航| 91免费观看国产| 在线电影欧美成精品| 精品久久久久av影院| 国产精品视频看| 亚洲黄色片在线观看| 日本vs亚洲vs韩国一区三区 | 综合欧美一区二区三区| 亚洲va在线va天堂| 精彩视频一区二区| 波多野结衣一区二区三区| 欧美三级中文字| 久久嫩草精品久久久久| 亚洲免费电影在线| 日本aⅴ免费视频一区二区三区| 国产中文字幕精品| 91国在线观看| 精品福利一区二区三区| 中文字幕一区二区不卡| 午夜久久福利影院| 国产一区二区三区综合| 日本高清不卡视频| 欧美不卡在线视频| 亚洲三级小视频| 久久电影国产免费久久电影| 成人动漫在线一区| 69精品人人人人| 国产精品久久久久影院色老大| 亚洲午夜久久久久久久久久久| 久久精品国产免费| 色爱区综合激月婷婷| 精品国产一区二区国模嫣然| 亚洲免费高清视频在线| 国产一区二区精品久久99| 在线观看日韩电影| 国产亚洲精品中文字幕| 日韩精品五月天| 99re视频这里只有精品| 精品国产伦一区二区三区观看体验 | 激情五月激情综合网| 在线精品视频免费观看| 欧美激情综合网| 久久99国产精品久久99| 日本高清成人免费播放| 日本一二三不卡| 麻豆成人免费电影| 91国产免费观看| 国产精品久久久久久久岛一牛影视| 日韩精品亚洲一区二区三区免费| 93久久精品日日躁夜夜躁欧美| 久久综合狠狠综合久久综合88| 亚洲国产精品久久久男人的天堂| 99久久国产综合精品麻豆| 久久久综合精品| 毛片av中文字幕一区二区| 欧美精品乱人伦久久久久久| 亚洲激情在线激情| 成人福利视频在线| 欧美国产日韩精品免费观看| 激情av综合网| 欧美成人性福生活免费看| 日韩精品一二三四| 精品视频123区在线观看| 亚洲男人的天堂在线观看| 国产经典欧美精品| 久久综合一区二区| 九九国产精品视频| 精品日韩欧美一区二区| 琪琪一区二区三区| 欧美一区二区在线免费播放| 亚洲第一狼人社区| 欧美日韩国产首页| 午夜精品视频一区| 7777精品伊人久久久大香线蕉 | 欧美久久久影院| 亚洲成a天堂v人片| 欧美日韩一区三区| 日韩经典中文字幕一区| 欧美日产在线观看| 日韩高清欧美激情| 欧美一区二区视频观看视频| 日产欧产美韩系列久久99| 日韩一区二区三| 极品少妇xxxx精品少妇偷拍| 久久奇米777| 成人sese在线| 亚洲激情网站免费观看| 欧美日韩成人综合在线一区二区| 午夜精品国产更新| 日韩欧美一二三四区| 国产又粗又猛又爽又黄91精品| 国产欧美一区二区精品性色超碰 | 国产不卡在线视频| 中文字幕一区三区| 91福利小视频| 丝袜美腿亚洲一区| 久久欧美中文字幕| eeuss鲁一区二区三区| 依依成人精品视频| 日韩一区二区三区三四区视频在线观看 | 国产精品久久久久影视| 在线观看免费亚洲| 欧美aⅴ一区二区三区视频| 久久综合久久综合久久综合| 丁香激情综合五月| 亚洲精品第1页| 91精品在线观看入口| 国产激情视频一区二区三区欧美 | 中文一区二区在线观看| 91理论电影在线观看| 日本系列欧美系列| 欧美国产成人精品| 欧美日韩美少妇| 国产精品综合一区二区三区| 亚洲免费观看高清在线观看| 91精品国产乱| 不卡高清视频专区| 首页国产欧美日韩丝袜| 国产精品素人视频| 欧美精品在线观看播放| 国产91露脸合集magnet| 亚洲国产毛片aaaaa无费看| 26uuu亚洲| 欧美午夜一区二区三区| 国产一区免费电影| 亚洲一线二线三线久久久| 久久这里都是精品| 欧美日韩视频一区二区| 国产成人小视频| 日韩精品五月天| 中文字幕综合网| 久久综合狠狠综合久久综合88 | 亚洲精品国产一区二区精华液 | 欧美日韩日日摸| 国产91色综合久久免费分享| 午夜精品123| 国产精品国产三级国产| 日韩欧美国产麻豆| 色成人在线视频| 成人黄色小视频| 久久精品国产久精国产爱| 亚洲国产精品一区二区www在线| 国产视频一区在线播放| 日韩欧美一区中文|