c语言生成正态分布随机数的代码
时间: 2023-02-27 08:00:47 浏览: 252
在 C 语言中,可以使用 Box-Muller 算法来生成正态分布的随机数。下面是一个实现的代码示例:
```
#include <math.h>
#include <stdlib.h>
#include <time.h>
double normal_rand(double mean, double stddev) {
static double n2 = 0.0;
static int n2_cached = 0;
if (!n2_cached) {
double x, y, r;
do {
x = 2.0*rand()/RAND_MAX - 1;
y = 2.0*rand()/RAND_MAX - 1;
r = x*x + y*y;
} while (r == 0.0 || r > 1.0);
double d = sqrt(-2.0*log(r)/r);
double n1 = x*d;
n2 = y*d;
double result = n1*stddev + mean;
n2_cached = 1;
return result;
} else {
n2_cached = 0;
return n2*stddev + mean;
}
}
int main() {
srand(time(NULL));
double mean = 0.0;
double stddev = 1.0;
for (int i = 0; i < 10; i++) {
printf("%.2f\n", normal_rand(mean, stddev));
}
return 0;
}
```
请注意,这是一个随机数生成器,因此每次运行程序生成的随机数将不同。
阅读全文