我正在写一个应该作为彩票的代码。可用的彩票号码是1-50,其中有10个。如果用户的号码与10个随机抽奖号码中的一个匹配,用户应该输入一个号码并且程序返回。我已经完成了所有这些部分,但有一个问题。所有10个彩票号码必须是唯一的。我已经得到了10个独特的数字1-50,但他们不是很随机。我写到这里的代码对我来说似乎是正确的,除了我知道缺少一些东西(以及我可以清理我的代码很多,但我现在专注于目标)。现在,如果我运行该程序,它将返回十个零。我需要彩票数组中的每个元素都是1-50的唯一数字,并且每次运行程序时都会生成不同的数字组。任何帮助,将不胜感激。为什么我的随机生成的数组只输出零?
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using std::cout; using std::cin; using std::endl;
void printOut(int[]);
void draw(int[]);
bool check();
int fillFunc[10];
int main()
{
const int arraySize = 10;
int win[arraySize] = {};
srand((unsigned)time(NULL));
draw(win);
cout << "Your lottery numbers are: ";
printOut(win);
}
void draw(int fillFunc[])
{
int i;
for (i = 0; i < 10; i++)
{
if (check() == true)
continue;
fillFunc[i] = 1 + rand() % 50;
}
}
void printOut(int fillFunc[])
{
for (int i = 0; i < 10; i++)
{
cout << " " << fillFunc[i];
}
cout << "\n";
}
bool check()
{
for (int i = 0; i < 10; ++i)
{
if (fillFunc[i] == i)
return true;
}
return false;
}
(也别问我为什么数组的名称为“赢”,这是我的教授要我叫什么)
这就是为什么大括号很重要。好的缩进也会给你一个线索,是不对的。 –
你应该看这个:[兰特()是有害的(https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful) –
什么是'检查()'应该被检查? –