C++ 写一个类,用正太分布产生随机数,随机种子是该类的成员变量,种子在构造函数中初始化
时间: 2024-12-19 11:20:08 浏览: 7
在C++中,我们可以创建一个名为`NormalRandomGenerator`的类,利用 `<random>` 库来生成正态分布(高斯分布)的随机数。这个类会有一个私有变量作为随机种子,并在构造函数中设置它。以下是简单的实现:
```cpp
#include <iostream>
#include <random>
class NormalRandomGenerator {
private:
// 私有成员变量存储随机种子
unsigned int seed;
public:
// 构造函数,接受一个种子并设置
NormalRandomGenerator(unsigned int initial_seed) : seed(initial_seed) {
std::srand(seed);
}
// 使用线性同余法获取正态分布的随机数
double generateRandom(double mean = 0.0, double stddev = 1.0) {
std::normal_distribution<double> dist(mean, stddev);
return dist(std::mt19937(std::srand(seed))); // 使用Mersenne Twister引擎
}
// 示例:生成两个正态分布的随机数
void generateTwoRandom() {
double random1 = generateRandom();
double random2 = generateRandom();
std::cout << "Random numbers with mean 0 and standard deviation 1: " << random1 << ", " << random2 << "\n";
}
};
int main() {
NormalRandomGenerator rng(1234); // 初始化一个随机生成器实例,种子为1234
rng.generateTwoRandom(); // 调用方法生成并打印两个随机数
return 0;
}
```
在这个例子中,我们使用了 `std::normal_distribution` 来表示正态分布,`std::mt19937` 和 `std::srand` 来管理随机数生成器。
阅读全文