c++正太分布随机数生成
时间: 2023-11-13 16:54:49 浏览: 41
可以使用C++标准库中的<random>头文件中的normal_distribution类来生成正态分布随机数。具体实现代码如下:
```c++
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::normal_distribution<> dis(0, 1); // 均值为0,标准差为1的正态分布
for (int i = 0; i < 10; ++i) {
std::cout << dis(gen) << ' ';
}
std::cout << std::endl;
return 0;
}
```
其中,std::random_device用于获取真正的随机数种子,std::mt19937是一个高质量的随机数生成器,std::normal_distribution是正态分布随机数生成器。
相关问题
c++怎么结束随机数生成
在 C++ 中,可以使用 srand() 函数来初始化随机数生成器,使用 rand() 函数来生成随机数。如果需要结束随机数生成,可以使用 srand() 函数将随机数生成器重新初始化为一个特定的值,例如 0。这样做可以确保下一次生成的随机数序列与上一次不同。
以下是一个示例代码:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
// 初始化随机数生成器
srand(time(NULL));
// 生成随机数
int random_number = rand() % 100;
std::cout << "Random number: " << random_number << std::endl;
// 结束随机数生成
srand(0);
// 再次生成随机数
random_number = rand() % 100;
std::cout << "Random number: " << random_number << std::endl;
return 0;
}
```
c++ 生成均匀分布随机数
生成均匀分布的随机数可以使用C++的random库来实现。可以通过以下步骤来生成均匀分布的随机数:
1. 准备随机数生成引擎,可以使用默认引擎default_random_engine。
2. 创建均匀分布的随机数生成器实例,可以使用uniform_int_distribution或uniform_real_distribution,根据需要生成整数或浮点数。
3. 传入引擎利用生成器生成随机数。
下面是一个生成均匀分布随机数的示例代码:
```cpp
#include <iostream>
#include <random>
#include <vector>
using namespace std;
int main() {
// 设置随机数引擎
const int SEED = 666;
default_random_engine dre(SEED);
// 1-10均匀分布的随机数生成器
uniform_int_distribution<int> d(1, 10);
// 创建一个vector用来接收随机数
const int LEN = 20;
vector<int> v;
v.reserve(LEN);
// 生成随机数并存入vector
for (int i = 0; i < LEN; i++) {
v.push_back(d(dre));
}
// 打印结果
cout << "RESULT:" << endl;
for (int i = 0; i < LEN; i++) {
cout << v[i] << " ";
}
cout << endl;
return 0;
}
```