C++;随机数生成器:尝试将结果作为向量,但通过使用空函数来获得错误 以前我问过如何在C++中制作随机数生成器,在别人的帮助下,我做对了。 现在,我尝试将结果作为向量而不是一系列数字返回,但它似乎不正确。我知道void并不意味着返回任何内容,但是使用double而不是void也不起作用。。 为了提供更多细节,我尝试返回两个名为x\u-coord和y\u-coord的容器,它们包含x\u-coord.push\u-back(oldRoot)和y\u-coord.push\u-back(newRoot)的所有结果。我这样做是因为我需要它们供以后使用。最好的方法是什么?提前谢谢你的帮助 #include <iostream> #include <vector> using namespace std; // Generate random x and y coordinates for 128 particles class Random { public: double oldRoot; double newRoot; int iteNum; Random(double aOldRoot, double aNewRoot, int aIteNum) { oldRoot = aOldRoot; newRoot = aNewRoot; iteNum = aIteNum; } void generate() { vector<double> x_coord; vector<double> y_coord; int count = 0; while (count <= iteNum) { double totalRoot = oldRoot + newRoot; if (totalRoot > 1.0) { oldRoot = newRoot; newRoot = totalRoot - 1.0; x_coord.push_back(oldRoot); y_coord.push_back(newRoot); } else { oldRoot = newRoot; newRoot = totalRoot; x_coord.push_back(oldRoot); y_coord.push_back(newRoot); } count += 1; } return x_coord, y_coord; } }; int main() { Random random10(0.1412, 0.2343, 16); random10.generate(); return 0; } #包括 #包括 使用名称空间std; //为128个粒子生成随机x和y坐标 类随机{ 公众: 重瓣根; 双新根; int-iteNum; 随机(双aOldRoot、双aNewRoot、int aIteNum){ oldRoot=aOldRoot; 新根=无根根; iteNum=aIteNum; } void生成(){ 向量x_坐标; 向量y_坐标; 整数计数=0; 而(计数1.0){ oldRoot=newRoot; newRoot=totalRoot-1.0; x_坐标。推回(oldRoot); y_coord.推回(新根); } 否则{ oldRoot=newRoot; newRoot=totalRoot; x_坐标。推回(oldRoot); y_coord.推回(新根); } 计数+=1; } 返回x_坐标,y_坐标; } }; int main(){ 随机数字10(0.1412,0.2343,16); 随机数10.生成(); 返回0; }
一个简单的选项是将2个C++;随机数生成器:尝试将结果作为向量,但通过使用空函数来获得错误 以前我问过如何在C++中制作随机数生成器,在别人的帮助下,我做对了。 现在,我尝试将结果作为向量而不是一系列数字返回,但它似乎不正确。我知道void并不意味着返回任何内容,但是使用double而不是void也不起作用。。 为了提供更多细节,我尝试返回两个名为x\u-coord和y\u-coord的容器,它们包含x\u-coord.push\u-back(oldRoot)和y\u-coord.push\u-back(newRoot)的所有结果。我这样做是因为我需要它们供以后使用。最好的方法是什么?提前谢谢你的帮助 #include <iostream> #include <vector> using namespace std; // Generate random x and y coordinates for 128 particles class Random { public: double oldRoot; double newRoot; int iteNum; Random(double aOldRoot, double aNewRoot, int aIteNum) { oldRoot = aOldRoot; newRoot = aNewRoot; iteNum = aIteNum; } void generate() { vector<double> x_coord; vector<double> y_coord; int count = 0; while (count <= iteNum) { double totalRoot = oldRoot + newRoot; if (totalRoot > 1.0) { oldRoot = newRoot; newRoot = totalRoot - 1.0; x_coord.push_back(oldRoot); y_coord.push_back(newRoot); } else { oldRoot = newRoot; newRoot = totalRoot; x_coord.push_back(oldRoot); y_coord.push_back(newRoot); } count += 1; } return x_coord, y_coord; } }; int main() { Random random10(0.1412, 0.2343, 16); random10.generate(); return 0; } #包括 #包括 使用名称空间std; //为128个粒子生成随机x和y坐标 类随机{ 公众: 重瓣根; 双新根; int-iteNum; 随机(双aOldRoot、双aNewRoot、int aIteNum){ oldRoot=aOldRoot; 新根=无根根; iteNum=aIteNum; } void生成(){ 向量x_坐标; 向量y_坐标; 整数计数=0; 而(计数1.0){ oldRoot=newRoot; newRoot=totalRoot-1.0; x_坐标。推回(oldRoot); y_coord.推回(新根); } 否则{ oldRoot=newRoot; newRoot=totalRoot; x_坐标。推回(oldRoot); y_coord.推回(新根); } 计数+=1; } 返回x_坐标,y_坐标; } }; int main(){ 随机数字10(0.1412,0.2343,16); 随机数10.生成(); 返回0; },c++,C++,一个简单的选项是将2个向量作为std::pair返回,如下所示: std::pair<std::vector<double>, std::vector<double>> generate() { // fill up the vectors return {x_coord, y_coord}; } std::vector<std::pair<double, double>> xy_coord; xy_coord.push_b
向量作为std::pair
返回,如下所示:
std::pair<std::vector<double>, std::vector<double>> generate() {
// fill up the vectors
return {x_coord, y_coord};
}
std::vector<std::pair<double, double>> xy_coord;
xy_coord.push_back({oldRoot, newRoot});
因为x
和y
坐标可能应该成对连接
您可以像这样插入随机生成的数字对:
std::pair<std::vector<double>, std::vector<double>> generate() {
// fill up the vectors
return {x_coord, y_coord};
}
std::vector<std::pair<double, double>> xy_coord;
xy_coord.push_back({oldRoot, newRoot});
一个简单的选项是将2向量作为std::pair
返回,如下所示:
std::pair<std::vector<double>, std::vector<double>> generate() {
// fill up the vectors
return {x_coord, y_coord};
}
std::vector<std::pair<double, double>> xy_coord;
xy_coord.push_back({oldRoot, newRoot});
因为x
和y
坐标可能应该成对连接
您可以像这样插入随机生成的数字对:
std::pair<std::vector<double>, std::vector<double>> generate() {
// fill up the vectors
return {x_coord, y_coord};
}
std::vector<std::pair<double, double>> xy_coord;
xy_coord.push_back({oldRoot, newRoot});
出现错误是因为您定义了函数generate()
的返回类型为void
,而您是返回x\u坐标,y\u坐标代码>
要修复它,您必须具有返回类型,如std::pair
,因为您的x_坐标
和y_坐标
是vector
,并且您将它们作为元组同时返回
基本上,你可以这样做:
std::pair<vector<double>, vector<double>> generate() {
vector<double> x_coord;
vector<double> y_coord;
//Put your code here...
return {x_coord, y_coord};
}
std::pair generate(){
向量x_坐标;
向量y_坐标;
//把你的代码放在这里。。。
返回{x_-coord,y_-coord};
}
出现错误是因为您定义了函数generate()
的返回类型为void
,而您是返回x\u坐标,y\u坐标代码>
要修复它,您必须具有返回类型,如std::pair
,因为您的x_坐标
和y_坐标
是vector
,并且您将它们作为元组同时返回
基本上,你可以这样做:
std::pair<vector<double>, vector<double>> generate() {
vector<double> x_coord;
vector<double> y_coord;
//Put your code here...
return {x_coord, y_coord};
}
std::pair generate(){
向量x_坐标;
向量y_坐标;
//把你的代码放在这里。。。
返回{x_-coord,y_-coord};
}
谢谢你教我关于std::pair的知识!但是,现在我在将void更改为std::pair后运行代码时没有得到任何输出。您知道如何获取x_坐标和y_坐标吗?如果要在执行generate()
后获取返回的元组,首先应该定义std::pair v
thenv=random10.generate()
,您可以使用v.first
获得x_-coord
,使用v.second
获得y_-coord
。感谢您教我有关std::pair的知识!但是,现在我在将void更改为std::pair后运行代码时没有得到任何输出。您知道如何获取x_坐标和y_坐标吗?如果要在执行generate()
后获取返回的元组,首先应该定义std::pair v
thenv=random10.generate()
,您可以使用v.first
获得x_坐标
,使用v.second
获得y_坐标
。