⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 new_xrandom.cpp

📁 本程序用c++语言实现了wcdma系统当中的信道预测算法
💻 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 + -