C语言实现正态分布
在C语言中实现正态分布(高斯分布)通常涉及以下两个主要任务:
- 生成符合正态分布的随机数:可以使用Box-Muller变换将均匀分布的随机数转换为正态分布的随机数。
- 计算正态分布的概率密度函数(PDF)或累积分布函数(CDF):用于统计分析或概率计算。
下面分别介绍这两个方面的实现方法,并提供相应的代码示例。
1. 生成符合正态分布的随机数
方法:Box-Muller变换
Box-Muller变换是一种将两个独立的均匀分布随机数转换为两个独立的正态分布随机数的方法。以下是使用Box-Muller变换生成标准正态分布(均值为0,标准差为1)随机数的C语言实现:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 函数声明
double generate_normal_distribution(double mean, double stddev);
int main() {
// 初始化随机数种子
srand((unsigned int)time(NULL));
double mean = 0.0; // 均值
double stddev = 1.0; // 标准差
int num_samples =