std::random_device rd; std::mt19937 gen(rd()); std::normal_distribution<float> dist(0.0, 1.0);解释代码
时间: 2024-01-20 16:02:33 浏览: 82
这段代码使用C++11中的随机数库来生成一个符合标准正态分布(均值为0,标准差为1)的随机数。
首先,定义了一个`std::random_device`对象`rd`,用于生成一个随机种子。然后,将该随机种子作为构造函数参数传递给了`std::mt19937`对象`gen`,用于生成随机数。
接下来,定义了一个`std::normal_distribution`对象`dist`,用于生成符合标准正态分布的随机数。该对象的构造函数需要两个参数:分别是正态分布的均值和标准差,这里分别设定为0.0和1.0。然后,调用`dist(gen)`方法可以生成一个符合标准正态分布的随机数。
例如,可以使用以下代码生成10个符合标准正态分布的随机数,并打印出来:
```c++
#include <iostream>
#include <random>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::normal_distribution<float> dist(0.0, 1.0);
for (int i = 0; i < 10; i++) {
float num = dist(gen);
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果可能为:
```
1.48139 -0.924576 -0.0538622 0.464718 -1.35336 -0.615092 -0.338546 -0.812719 0.821934 -0.817228
```
这些随机数符合标准正态分布,均值约为0,标准差约为1。
阅读全文