【发布时间】:2019-04-01 11:23:19
【问题描述】:
我在 C++ 中实现了一个简单的二维向量类,它初始化具有给定大小(行数和列数)的二维向量,以及是否随机化该值。我还实现了将矩阵打印到控制台以查看结果的方法。
我已尝试在 Windows (MSYS2) 中使用带有标志“-std=c++17”的 GCC 8.3.0 运行代码。这是代码。
#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 时,我期望的是一个具有随机值的二维向量。相反,我得到了值都相同的向量。
例如。当我在我的电脑上运行代码时,我得到了这个:
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++ 代码有什么问题?提前感谢您的回答。
【问题讨论】:
-
OT:你所说的二维向量,我称之为“矩阵”。一个二维向量(对我来说)是一对 2 个数字。 (很抱歉吹毛求疵。)
-
标签: c++ vector random printing floating-point