C语言 正态分布随机函数
时间: 2023-11-23 08:52:40 浏览: 137
正态分布程序C语言
5星 · 资源好评率100%
C语言中可以使用rand()函数生成随机数,但是它生成的是均匀分布的随机数,如果需要生成正态分布的随机数,可以使用Box-Muller变换。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
double rand_normal(double mu, double sigma) {
static double z0, z1;
static int flag = 0;
flag = !flag;
if (!flag)
return z1 * sigma + mu;
double u1, u2;
do {
u1 = rand() * (1.0 / RAND_MAX);
u2 = rand() * (1.0 / RAND_MAX);
} while (u1 <= 1e-7);
double r = sqrt(-2.0 * log(u1));
double theta = 2.0 * M_PI * u2;
z0 = r * cos(theta);
z1 = r * sin(theta); return z0 * sigma + mu;
}
int main() {
srand(time(NULL));
for (int i = 0; i < 10; i++) {
printf("%lf\n", rand_normal(0, 1));
}
return 0;
}
```
其中,rand_normal函数的参数mu和sigma分别表示正态分布的均值和标准差。
阅读全文