c++ 生成正态分布随机数
时间: 2024-08-31 10:00:57 浏览: 51
在 C++ 中,生成正态分布(也称高斯分布)的随机数通常需要依赖外部库,因为 C++ 标准库本身并不提供这个功能。最常用的库是 `<random>` 和 `<cmath>`,配合 Boost 库或者第三方库如 Gsl、Mersenne Twister 等。
一种常见的做法是使用 Box-Muller 变换或者 Ziggurat 方法生成标准正态分布的随机数,然后通过变换来适应所需的平均值(μ)和标准差(σ)。以下是一个简单的示例,使用 `<random>` 和 `<cmath>` 来创建一个平均值为 `mu`,标准差为 `sigma` 的正态分布随机数生成器:
```cpp
#include <iostream>
#include <random>
#include <cmath>
double random_gaussian(double mu, double sigma) {
std::normal_distribution<double> dist(mu, sigma);
return dist(std::default_random_engine());
}
int main() {
// 创建一个随机数引擎,通常是全局唯一的
std::default_random_engine generator;
// 设置期望值和标准差
double mu = 0.0;
double sigma = 1.0;
// 生成并打印一个正态分布的随机数
double random_num = random_gaussian(mu, sigma);
std::cout << "Random Gaussian number with μ=" << mu << " and σ=" << sigma << ": " << random_num << "\n";
return 0;
}
```
阅读全文