C语言写方差为5得分正态分布
时间: 2024-10-15 18:06:17 浏览: 25
在C语言中生成一个平均值为0,标准差为5(即方差为25)的正态分布随机数,通常需要用到数学库如`<math.h>`中的`rand()`函数配合一些高斯分布的概率密度函数计算。这里提供一个简单的基于Box-Muller转换的随机数生成方法:
```c
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
// Box-Muller变换生成正态分布随机数
void gaussian(double *mean, double *variance, double *result) {
double u1, u2;
do {
u1 = 2.0 * rand() / RAND_MAX - 1.0; // 随机生成(-1, 1)之间的均匀分布
u2 = 2.0 * rand() / RAND_MAX - 1.0;
// 计算z值 (正态分布)
double z0 = sqrt(-2.0 * log(u1)) * cos(2 * M_PI * u2);
*result = *mean + (*variance) * z0;
} while (u1 * u1 + u2 * u2 > 1); // 保证满足正态分布条件
}
int main() {
const int samples = 1000; // 想要生成的样本数
double mean = 0, variance = 5, random_value;
for (int i = 0; i < samples; ++i) {
gaussian(&mean, &variance, &random_value);
printf("Random value from normal distribution with mean %f and variance %f: %.2f\n", mean, variance, random_value);
}
return 0;
}
```
这个程序会生成一系列平均值为0,方差为5的标准正态分布随机数,并打印出来。
阅读全文