高斯白噪声c语言实现
时间: 2023-07-13 09:10:54 浏览: 168
如何用c产生高斯白噪声.pdf
5星 · 资源好评率100%
下面是一个简单的高斯白噪声生成器的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define PI 3.14159265358979323846
double rand_normal(double mu, double sigma)
{
double U1, U2, W, mult;
static double X1, X2;
static int call = 0;
if (call == 1) {
call = !call;
return (mu + sigma * (double) X2);
}
do {
U1 = -1 + ((double) rand () / RAND_MAX) * 2;
U2 = -1 + ((double) rand () / RAND_MAX) * 2;
W = pow(U1, 2) + pow(U2, 2);
} while (W >= 1 || W == 0);
mult = sqrt((-2 * log(W)) / W);
X1 = U1 * mult;
X2 = U2 * mult;
call = !call;
return (mu + sigma * (double) X1);
}
int main()
{
int i;
double mu = 0, sigma = 1;
srand(time(NULL));
for (i = 0; i < 10; i++) {
printf("%lf\n", rand_normal(mu, sigma));
}
return 0;
}
```
该实现使用了 Box-Muller算法来生成高斯白噪声。函数 `rand_normal` 接受两个参数:期望值 `mu` 和标准差 `sigma`,并返回一个高斯分布的随机数。在 `main` 函数中,我们使用 `srand` 函数初始化随机数发生器,并多次调用 `rand_normal` 函数来生成随机数并输出。
阅读全文