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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? newran.cpp

?? D-ITG2.4源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// newran.cpp -----------------------------------------------------------

// NEWRAN02B - 22 July 2002

#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();
}


//Real Constant::Next() { return value; }


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;
}

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); }
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
依依成人综合视频| 蜜桃久久久久久久| 国产不卡在线视频| 久久久久9999亚洲精品| 免费成人性网站| 日韩视频免费直播| 免费不卡在线观看| 色综合久久88色综合天天6| 久久精品一区二区三区不卡牛牛| 美女免费视频一区| 欧美变态口味重另类| 久久精品国产99| 久久久精品综合| 国产一级精品在线| 国产精品免费久久| 欧美性一区二区| 美女视频黄a大片欧美| 久久久99久久| 欧美色图12p| 国产一区二区三区在线看麻豆| 欧美激情一区二区在线| 91在线免费视频观看| 亚洲伊人色欲综合网| 欧美疯狂做受xxxx富婆| 国产精品一二三四区| 成人免费一区二区三区在线观看 | 亚洲欧美日韩人成在线播放| 色婷婷av久久久久久久| 麻豆精品在线视频| 亚洲精品国产a| 久久精品亚洲精品国产欧美kt∨| 99精品视频中文字幕| 奇米影视一区二区三区小说| 久久久综合网站| 精品视频999| 色综合久久99| 东方欧美亚洲色图在线| 日本vs亚洲vs韩国一区三区 | 欧美电视剧免费全集观看| 99久久免费精品| 风间由美性色一区二区三区| 天天综合天天做天天综合| 亚洲男人天堂av网| 国产精品久久久久久久久久久免费看| 欧美日韩在线直播| 欧美在线视频你懂得| 91小视频免费观看| 91免费观看国产| 在线观看亚洲一区| 色综合色综合色综合色综合色综合| 久久99国产精品麻豆| 奇米色777欧美一区二区| 午夜精品福利视频网站| 首页欧美精品中文字幕| 亚洲电影你懂得| 日韩黄色片在线观看| 日韩电影免费一区| 美腿丝袜亚洲三区| 成人免费观看男女羞羞视频| 从欧美一区二区三区| 99麻豆久久久国产精品免费 | 久久精品夜夜夜夜久久| 日本一区二区三区四区| 亚洲欧洲另类国产综合| 成人免费在线视频| 免费成人在线网站| 成人综合激情网| 欧美日韩在线播放三区| 欧美高清视频www夜色资源网| 精品国产伦理网| 自拍偷拍亚洲激情| 免费成人性网站| 99精品国产一区二区三区不卡| 欧美午夜精品一区| 国产日韩欧美精品综合| 亚洲最新视频在线播放| 韩国v欧美v日本v亚洲v| 粉嫩一区二区三区在线看| 日韩视频一区二区三区 | 蜜臀久久99精品久久久久久9 | 精品噜噜噜噜久久久久久久久试看| 精品成人在线观看| 亚洲一二三专区| 成人av在线一区二区| 日韩免费成人网| 亚洲午夜在线电影| 91亚洲资源网| 国产精品欧美精品| 日韩中文字幕1| 欧美日韩在线不卡| 亚洲激情男女视频| 99国产精品国产精品久久| 欧美www视频| 日本一不卡视频| 欧美视频在线观看一区二区| 亚洲欧洲日韩女同| 色综合一个色综合| 亚洲精品高清视频在线观看| 成人福利视频在线看| 国产欧美一区二区精品性色| 久久国产综合精品| 久久午夜国产精品| 国产超碰在线一区| 亚洲欧美在线aaa| 91蜜桃在线免费视频| 亚洲一线二线三线久久久| 在线免费一区三区| 日韩高清不卡在线| 26uuu久久天堂性欧美| 国产精品一区二区久激情瑜伽| 欧美韩国日本综合| 91在线播放网址| 亚洲狠狠爱一区二区三区| 欧美一二区视频| 国产在线精品一区二区不卡了| 久久综合色8888| 91在线精品一区二区三区| 亚洲福利一二三区| 精品国产乱码久久久久久浪潮 | 成人黄色电影在线| 亚洲成人综合视频| 日本一区二区三区视频视频| 在线观看日韩毛片| 国产一区二区网址| 亚洲电影中文字幕在线观看| 日韩欧美国产三级| 欧美视频一区二区在线观看| 国模少妇一区二区三区| 亚洲va韩国va欧美va精品 | 久久久亚洲高清| 色av成人天堂桃色av| 国产麻豆精品久久一二三| 亚洲午夜电影在线观看| 中文字幕欧美日韩一区| 8x8x8国产精品| 欧美性色欧美a在线播放| 国产大陆a不卡| 久久精品国产99国产| 石原莉奈在线亚洲二区| 国产精品久久久久四虎| 日韩午夜精品电影| 欧美一级二级在线观看| 欧美美女喷水视频| 欧美亚洲免费在线一区| eeuss鲁片一区二区三区在线观看| 激情伊人五月天久久综合| 日韩电影网1区2区| 另类小说一区二区三区| 丝瓜av网站精品一区二区| 天天综合天天做天天综合| 视频一区在线播放| 日本欧美一区二区三区乱码| 麻豆国产精品视频| 国产一区免费电影| 国产精品夜夜嗨| 成人综合婷婷国产精品久久| 波多野结衣91| 色欧美片视频在线观看| 欧美影院午夜播放| 日韩一区二区三区在线| 久久久一区二区三区| 国产欧美一区二区三区鸳鸯浴| 国产精品国产三级国产| 一区二区三区日韩精品视频| 日韩1区2区日韩1区2区| 国产精品亚洲一区二区三区在线 | 136国产福利精品导航| 一区二区欧美在线观看| 老司机午夜精品99久久| 高清不卡在线观看| 91精品在线观看入口| 国产精品色哟哟网站| 欧美aⅴ一区二区三区视频| 国产精品一品二品| 欧美一区中文字幕| 亚洲人被黑人高潮完整版| 麻豆一区二区三区| 91国在线观看| 国产精品久久久久久久久免费桃花| 亚洲国产美女搞黄色| 成人va在线观看| 欧美变态口味重另类| 亚洲电影在线免费观看| 成人一区二区三区| 日韩你懂的电影在线观看| 亚洲国产日韩精品| 91国产成人在线| 自拍偷拍国产精品| 日本女人一区二区三区| 亚洲电影第三页| 激情欧美一区二区| 日韩免费一区二区| 久久成人精品无人区| 欧美日韩亚洲综合| 亚洲一区二区黄色| 色悠悠久久综合| 夜夜嗨av一区二区三区网页| 99九九99九九九视频精品| 日韩一区中文字幕| 91国偷自产一区二区开放时间|