【发布时间】:2018-02-16 14:24:30
【问题描述】:
我在尝试使其正常工作时遇到问题。我打算在 1 和 49 之间选择 6 个唯一数字。我有一个正确执行此操作的函数,但努力检查数组是否存在重复和替换。
srand(static_cast<unsigned int>(time(NULL))); // Seeds a random number
int picked[6];
int number,i,j;
const int MAX_NUMBERS = 6;
for (i = 0; i < MAX_NUMBERS; i++)
{
number = numberGen();
for (int j = 0; j < MAX_NUMBERS; j++)
{
if (picked[i] == picked[j])
{
picked[j] = numberGen();
}
}
}
我的数字生成器只是创建一个介于 1 和 49 之间的随机数,我认为它可以正常工作。我刚刚开始使用 C++,任何帮助都会很棒
int numberGen()
{
int number = rand();
int target = (number % 49) + 1;
return target;
}
【问题讨论】:
-
如果我们谈论 C++,
std::set在检查现有值方面要好得多,RNG 有一个单独的子库 -
number去哪儿了?您为什么打算用新生成的数字替换已经生成的数字? -
一个简单的选择:将数字 1-49 粘贴在向量中。
std::shuffle向量。获取前 6 个数字。 -
@James Fogarty - 在这种情况下,向量或数组没有区别。将值填入
std::array。随机播放。读取前 6 个值 - 也适用于此。
标签: c++