【发布时间】:2019-06-01 20:03:36
【问题描述】:
我正在 Bjarne Stroustrup 的“Programming Principles and Practice Using C++”一书(第 130 页,练习 13)中进行 Bulls and Cows 作业,我希望程序生成 0 到 9 范围内的四个不同整数(例如 1234 但不是 1122)
我创建了一个向量来存储数字和一个生成 4 个数字并将它们添加到向量中的函数,但是数字可能相同,我无法将数字返回给主函数
#include "../..//..//std_lib_facilities.h"
vector<int> gen4Nums(vector<int> secNum)
{
random_device rd; // obtain a random number from hardware
mt19937 eng(rd()); // seed the generator
uniform_int_distribution<> distr(0, 9); // define the range
secNum.clear();
for (int i = 0; i < 4; i++)
{
secNum.push_back(distr(eng));
cout << secNum[i];
}
return secNum;
}
int main()
{
vector<int> secNum;
gen4Nums(secNum);
}
我希望向主函数返回 4 个不同的随机数
【问题讨论】:
-
你的函数签名没有多大意义,应该是
vector<int> gen4Nums()或者void gen4Nums(vector<int>& secNum) -
对于您的用例,
std::set<int>似乎是更合适的容器。无论如何,如果您发现它已经是结果的一部分,则必须重复确定随机值。 -
我的意思是,如果你想生成随机数,有this question。不确定它是否重复,只是因为听起来您在寻求调试帮助,但这仍然可能会有所帮助。