在 2D 矢量C++中生成随机数
Generate Random Number in 2D Vector C++
我正在C++中实现一个简单的 2D 向量类,该类初始化具有给定大小(行数和列数(的 2D 向量以及是否随机化该值。我还实现了将矩阵打印到控制台以查看结果的方法。
我尝试在Windows(MSYS2(中使用GCC 8.3.0运行代码,并带有标志"-std=c ++ 17"。这是代码。
#include <random>
#include <iostream>
#include <vector>
class Vec2D
{
public:
Vec2D(int numRows, int numCols, bool isRandom)
{
this->numRows = numRows;
this->numCols = numCols;
for(int i = 0; i < numRows; i++)
{
std::vector<double> colValues;
for(int j = 0; j < numCols; j++)
{
double r = isRandom == true ? this->getRand() : 0.00;
colValues.push_back(r);
}
this->values.push_back(colValues);
}
}
double getRand()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0,1);
return dis(gen);
}
void printVec2D()
{
for(int i = 0; i < this->numRows; i++)
{
for(int j = 0; j < this->numCols; j++)
{
std::cout << this->values.at(i).at(j) << "t";
}
std::cout << std::endl;
}
}
private:
int numRows;
int numCols;
std::vector< std::vector<double> > values;
};
int main()
{
Vec2D *v = new Vec2D(3,4,true);
v->printVec2D();
}
我期望的是当"isRandom"参数true
时具有随机值的 2D 向量。相反,我得到了值都相同的向量。例如。当我在计算机中运行代码时,我得到了这个:
0.726249 0.726249 0.726249 0.726249
0.726249 0.726249 0.726249 0.726249
0.726249 0.726249 0.726249 0.726249
我的问题是我的C++代码有什么问题?提前感谢您的回答。
我认为不应该每次都创建生成器,使这部分成为成员,只调用dis
std::random_device rd; //Will be used to ***obtain a seed for the random number engine***
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0,1);
其次,确保你打电话
std::srand(std::time(nullptr));
仅在应用程序乞求时一次
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 为什么 rand 不在我的代码中生成随机数?
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 从给定种子生成相同的随机数序列C++
- 随机数生成函数说明
- C++ 尝试生成随机数时弹出警告帮助?
- 尝试在 c++ 中创建随机数生成器并收到错误
- 从给定的随机数组值生成随机数 Arduino程序C++
- 如何在个人计算机和群集 (c++) 上生成相同的随机数