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

📄 random.cpp

📁 来自美国著名大学的研究,实现动目标的自动跟踪算法
💻 CPP
字号:
#include <stdlib.h>
#include <math.h>
#include <windows.h>
/*********************************************************************************
  Function    : uniform_random
  Description : This is the worst random number routine in the known universe,
		but I use it for portability. Feel free to replace it. 
  Parameter   : 
  Return      : random 0 乣 1
  Call	      :
*********************************************************************************/

double WINAPI uniform_random( )
{
	return (double) rand( ) / (double) RAND_MAX;
}


/*********************************************************************************
  Function    : gaussian_random
  Description : 
  Parameter   : 
  Return      : 
  Call	      :
*********************************************************************************/

double WINAPI gaussian_random( )
{
	static int next_gaussian = 0;
	static double saved_gaussian_value;
	
	double fac, rsq, v1, v2;
	
	if (next_gaussian == 0)
	{
		do {
			v1 = 2.0 * uniform_random() - 1.0;
			v2 = 2.0 * uniform_random() - 1.0;
			rsq = v1 * v1 + v2 * v2;
		} while (rsq >= 1.0 || rsq == 0.0);

		fac = sqrt(-2.0*log(rsq)/rsq);
		saved_gaussian_value = v1 * fac;
		next_gaussian = 1;
		return v2 * fac;
	}
	else
	{
		next_gaussian = 0;
		return saved_gaussian_value;
	}
}


/*********************************************************************************
  Function    : evaluate_gaussian
  Description : 
  Parameter   : val   (Input) -
		sigma (Input) -
  Return      : 
  Call	      :
*********************************************************************************/

double WINAPI evaluate_gaussian(double val, double sigma)
{
	/* This private definition is used for portability */
	static const double PI = 3.14159265358979323846;

	return 1.0 / (sqrt(2.0*PI) * sigma) * exp(-0.5 * (val*val / (sigma*sigma)));
}

⌨️ 快捷键说明

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