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 */