c++生成正态分布随机数的函数
时间: 2024-09-20 08:14:55 浏览: 46
在 C++ 中,生成正态分布(也称为高斯分布)的随机数通常需要依赖于第三方库,因为标准库 `<random>` 提供的默认随机引擎并不直接支持这种分布。一个常用的库是 `boost` 库中的 `boost::normal_distribution`,或者是 `<random>` 标准库结合一些自定义计算。
如果你使用的是 C++11 及以上版本,并且已包含了 `<random>` 和 `<cmath>` 头文件,可以这样做:
```cpp
#include <iostream>
#include <random>
double generate_normal(double mean, double stddev) {
std::normal_distribution<double> dist(mean, stddev);
static std::mt19937 gen(std::random_device{}()); // 使用 Mersenne Twister 随机引擎
return dist(gen); // 生成随机数
}
int main() {
double mean = 0;
double stddev = 1; // 正态分布的标准差
std::cout << "Random normal number: " << generate_normal(mean, stddev) << "\n";
return 0;
}
```
在这个例子中,`generate_normal` 函数接受均值 `mean` 和标准差 `stddev` 参数,然后使用 `std::normal_distribution` 来创建一个正态分布。`std::mt19937` 是一个伪随机数生成器,`gen()` 则是一个实例,它从 `std::random_device` 获取种子以保证每次程序运行结果不同。
阅读全文