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

📄 wuzhanji_random.h

📁 这是校验位打孔重传的源程序
💻 H
字号:

/*****************************************************/
/*  random number functions
/* 
/* 
/*******************************************************/


/* uniform random number generator
generate a random number between 0 and 1
*/
double random()
{
long z,k;
static long s1=12345L;
static long s2=12345473464L;

	k= s1 / 53668L;
	s1 = 40014L * (s1 - k*53668L) - k*12211L;
	if (s1<0)
	  s1 = s1 + 2147483563L;
	k = s2 / 52774;
	s2 = 40692L * (s2 - k*52774L) - k*3791L;
	if (s2<0)
        s2 = s2 + 2147483399L;
 	z=s1 - s2;
	if (z<1)
  	  z = z + 2147483562L;
	return (double) z / (double) 2147483563.0;
}



/* generate a number between -1 and 1 */
double generate_random_source()
{
/* sign of the number */
double sign;

	if(random()>=0.5) 
	  sign=-1.0;
	else
	  sign=1.0;
	return sign*random();
}

/* binary source generator
generate a sequence of uniformely distributed bits
*/
short generate_binary_source()
{
	if(random()<.5) return 0;
	else return 1;
}


/* Noise generator
parameters : sigma2 = variance (global variable)
generate a gaussian distributed sequence with zero mean
*/
double AWGN(double sigma2)
{
static int iset=0;
static double gset;
double fac,r,v1,v2;

	/* perform Box Muller transformation */
//	if (iset==0)
	{	
	  do
	  {
	    v1=2.0*random()-1.0;
	    v2=2.0*random()-1.0;
	    r=v1*v1+v2*v2;
	  }
	  while (r>=1.0 || r == 0.0);
	  fac=sqrt(-2.0*sigma2*log(r)/r);
	  gset = v1 * fac;
	  iset = 1;
	  return (double)( v2*fac);
	}
/*
	else
	{
	  iset = 0;
	  return (float)(gset);
	}
*/
}


/*******************************
/*  Rayleigh noise
/*  double RAYL(void)
/*  WU ZHANJI progrmmed on JAN 20,2002
/*  function: produce rayleigh noise
/*  input  parameter:delt_2 is the variance of AWGN noise
/*  output parameter:RAYL noise
/*******************************/

double RAYL(void)
{
double temp1,temp2,u;

	temp1=AWGN(1.0/2.0);
	temp2=AWGN(1.0/2.0);
	u=sqrt(temp1*temp1+temp2*temp2);
	return(u);
	
}

⌨️ 快捷键说明

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