www.pudn.com > NoiseEstimate.rar > random_variate.h


#pragma once 
 
#ifndef RANDOM_VARIATE_H 
#define RANDOM_VARIATE_H 
 
/* uniform distribution on the interval {min, max} */ 
/* Probability density function: */ 
/* p(x) = 1/(max-min) */ 
double gen_uniform(double min = 0, double max = 1);  
 
/* normal (Gaussian) distribution with mean Mu and standard deviation Sigma */  
/* Probability density function: */ 
/* p(x) = 1/(sqrt(2*PI)*Sigma) * exp(-(x-Mu)^2/(2*Sigma^2)) */ 
double gen_normal(double mu = 0, double sigma = 1); 
 
/* exponential distribution with scale inversely proportional to parameter Lambda */ 
/* Probability density function: */ 
/* p(x) = Lambda * exp(-Lambda * x) */ 
double gen_exponential(double lambda = 1); 
 
/* Rayleigh distribution with scale parameter Sigma */ 
/* Probability density function: */ 
/* p(x) = 1/Sigma^2 * x * exp(-x^2/(2*Sigma^2)) */ 
double gen_rayleigh(double sigma = 1); 
 
/* gamma distribution with shape parameter Alpha and scale parameter Lambda */ 
/* Probability density function: */ 
/* p(x) = Lambda^(-Alpha) / Gamma(Alpha) * x^(Alpha-1) * exp(-x/Lambda) */ 
double gen_gamma(double alpha = 1, double lambda = 1); 
 
/* continuous beta distribution with shape parameters Alpha and Beta */ 
/* Probability density function: */ 
/* p(x) = x^(Alpha-1) * (1-x)^(Beta-1) / Beta(Alpha, Beta) */ 
double gen_beta(double alpha = 1, double beta = 1); 
 
 
	//! 均匀分布 
	double Uniform(double x1=0, double x2=1); 
	//! 正态分布 
	double Normal(double avg=0, double sigma=1); 
	//! Poission分布 
	int Poisson(double lamda); 
	//! 三角分布, 密度函数为三角形,左下x坐标为a,右下x坐标为b 
	double Triangle(double a, double b); 
 
 
 
 
#endif /* RANDOM_VARIATE_H */