c++随机生成一组平均数为10且为正态分布的数
时间: 2024-09-22 18:06:31 浏览: 56
在C++中,生成一组平均数为10、标准差固定的正态分布(也称高斯分布)的随机数通常需要依赖外部库,如`<random>`库,以及一些统计计算。以下是一个简单的示例,如何使用该库生成这样的随机数序列:
```cpp
#include <iostream>
#include <vector>
#include <random>
// 定义一个正态分布生成器函数
double normal_distribution(double mean, double stddev) {
static std::normal_distribution<double> dist(mean, stddev);
return dist();
}
int main() {
const int size = 100; // 要生成的随机数的数量
double average = 10.0; // 平均值
double stddev = 1.0; // 标准差 (可以调整这个值影响分布的密集程度)
// 创建一个随机数生成器,并设置其种子以获得可预测的结果(这里为了演示)
std::mt19937 generator(std::chrono::system_clock::now().time_since_epoch().count());
// 使用normal_distribution生成正态分布的随机数,并存入vector
std::vector<double> random_numbers(size);
for (size_t i = 0; i < size; ++i) {
random_numbers[i] = normal_distribution(average, stddev);
}
// 输出结果
double sum = 0;
for (const auto& num : random_numbers) {
sum += num;
std::cout << num << " ";
}
std::cout << "\nAverage: " << sum / size << "\n"; // 验证平均值
return 0;
}
```
在这个例子中,我们首先定义了一个正态分布函数,然后创建了一个Mersenne Twister引擎(`std::mt19937`),它是一种常见的高质量伪随机数生成器。接着,我们循环生成指定数量的随机数,并存储到`vector`中。
运行此程序时,会看到一组平均数接近10的正态分布随机数。如果想改变平均值或标准差,只需修改`normal_distribution`函数内的参数即可。请注意,由于生成的是伪随机数,实际结果可能会略偏离期望值。
阅读全文