可以免费注册的网站,海外销售是做什么的,网站建设方法氵金手指排名27,花生棒做网站手动生成
Marsaglia和Bray在1964年提出,C版本如下: mu是均值,sigma是方差,X服从N(0,1)分布 高斯噪声为加性噪声,在原图的基础上加上噪声即为加噪后的图象。
double generateGaussianNoise(double mu, double sigma)
{static double V1, V2, S;static int phase 0;double X;d…手动生成
Marsaglia和Bray在1964年提出,C版本如下: mu是均值,sigma是方差,X服从N(0,1)分布 高斯噪声为加性噪声,在原图的基础上加上噪声即为加噪后的图象。
double generateGaussianNoise(double mu, double sigma)
{static double V1, V2, S;static int phase 0;double X;double U1,U2;if ( phase 0 ) {do {U1 (double)rand() / RAND_MAX;U2 (double)rand() / RAND_MAX;V1 2 * U1 - 1;V2 2 * U2 - 1;S V1 * V1 V2 * V2;} while(S 1 || S 0);X V1 * sqrt(-2 * log(S) / S);} else{X V2 * sqrt(-2 * log(S) / S);}phase 1 - phase;return musigma*X;
}函数生成
#include random
#include chrono
#include iostreamint main(void) {// 从epoch1970年1月1日00:00:00 UTC开始经过的纳秒数unsigned类型会截断这个值unsigned seed std::chrono::system_clock::now().time_since_epoch().count();std::default_random_engine generator(seed);// 第一个参数为高斯分布的平均值第二个参数为标准差std::normal_distributiondouble GaussNoise(0.0, 1.0);for (int i 0; i 10; i)std::cout GaussNoise(generator) std::endl;
}std::default_random_engine gen;
std::normal_distribution gaussianNoise{0.0, 0.05};
LOG(ERROR)gaussianNoise(gen);Note
该方法是C11引入的编译时需要加上参数g -stdc11 main.cc;如果generator构造时没有参数则每次执行main生成的随机数序列都是一样的。generator的参数seed也可以用time(NULL)来产生不过time(NULL)产生的结果是以秒为单位的整数所以两次执行之间间隔过短使time(NULL)结果相同时两次执行也会产生一样的随机数序列。