📄 new_xrandom.cpp
字号:
#include "math.h"
#include "stdio.h"
#include "iostream.h"
//#include "fstream.h"
#include "iomanip.h" /////////////for setw();
#include "string.h"
// C string library
#include "include.h"
#include "boolean.h"
#include "extreal.h"
#include "myexcept.h"
#include "newran.h"
#define SV 10
#define FadingMargin pow(10.,-3.)
//#include "cdma_sim.h"
//#include "sys_random.h"
//#include "c:\diske\xxd\main\xrandom.bak"
int xPoisson1(Real);
int xPoisson2(Real);
void initialize()
{
Random c;
c.Set(0.4356);
}
int xPoisson(long UN,float detT,float u)
{
int yy;
Real mean=UN*detT*u;
if(mean<=13.89)
// Histogram(&y,5000) ; /////////////////////////////////
// getchar();
yy=xPoisson1(mean);
else
{
yy=xPoisson2(mean);
}
return yy;
}
int xPoisson1(Real mean1)
{
Poisson y(mean1);
// Histogram(&y,5000) ; /////////////////////////////////
// getchar();
return (int)y.Next();
}
int xPoisson2(Real mean2)
{
int k=0;
float f1,f,s2;
Uniform y;
f=(float)y.Next();
s2=(float)exp(-mean2);
f1=s2;
if((f>0.0)&&(f<=f1))
k=0;
else
{
int i=0;
do
{
i++;
s2=(float)(mean2/i)*s2;
f1+=s2;
}
while(!(f<=f1));
k=i;
}
return k;
}
/*float xUniform(float down,float up)
{
Uniform y;
float rn,fact;
fact=up-down;
rn=(float)y.Next()*fact-down;
return rn;
}*/
float xExponent(float fCallLength)
{
Exponential y;
return (float)y.Next()*fCallLength;
}
float Shadow_Fading()
{
Normal y;
float m_fading;
m_fading=(float)1./(float)pow(10.,y.Next()/10.0*SV);
if(m_fading<FadingMargin) m_fading=(float)FadingMargin;
if(m_fading>(1.0/FadingMargin)) m_fading=(float)(1.0/FadingMargin);
return m_fading;
// return 4.*y.Next();
}
float Next_Shadow_Fading(float sf,float v,float detT)
{
const double X=20.;
Normal yy;
double y,m_fading;
y=log10(sf)*exp(-v*detT/X)*10.0/SV+yy.Next()*sqrt((1-exp(-2*v*detT/X)));
m_fading=1./pow(10.,y/10.0*SV);
if(m_fading<FadingMargin) m_fading=FadingMargin;
if(m_fading>(1.0/FadingMargin)) m_fading=(1.0/FadingMargin);
return (float)m_fading;
}
/*
float Shadow_Fading()
{
Normal y;
return pow(10,y.Next());
}
float Next_Shadow_Fading(float sf,float v,float detT)
{
const int X=20;
Normal yy;
float y;
y=log10(sf)*exp(-v*detT/X)+yy.Next()*sqrt((1-exp(-2*v*detT/X)));
return pow(10,y);
}*/
int xGeometry(float q)
{
Uniform yy;
float F,F1,F2;
int y;
F1=0.;
F2=q;
F=(float)yy.Next();
cout<<"F=="<<F<<endl;
getchar();
if ((F>0.)&&(F<=(1-F2)))
y=1;
else
{
int i=0;
do
{
i++;
F1=F2;
F2*=q;
}
while (!((F>(1.0-F1))&&(F<=(1.0-F2))));
y=i+1;
}
return y;
}
int xMixed_Geometry(float q1,float q2,float c1,float c2)
{
Uniform yy;
float F,F1,s1,s2;
int y;
s1=q1;
s2=q2;
F=(float)yy.Next();
F1=c1*(1-s1)+c2*(1-s2);
// cout<<"F=="<<F<<endl;
// getchar();
if (F<=F1)
y=1;
else
{
int i=0;
do
{
i++;
s1*=q1;
s2*=q2;
F1=c1*(1-s1)+c2*(1-s2);
}
while (!(F<=F1));
y=i+1;
}
return y;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -