【发布时间】:2019-06-14 08:39:22
【问题描述】:
这个程序的目标是将 6 个随机数添加到 1 到 50 之间的数组中,并且不能有任何重复。我主要是在检查以确保没有任何重复时遇到问题。
我尝试了多种方法,但我似乎无法弄清楚。 (在此之前还有更多与我的问题无关的代码)。
.....
//puts random numbers into an array
i = 0, j = 0;
for (i = 0; i < arrSize; i++)
{
randArr[i] = randNums(1,50);
}
//checks to make sure there are no duplicates
i = 0, j = 0, k = 0, temp = 0;
for (i = 0; i < arrSize; i++)
{
for (j = 1; j <= arrSize;)
{
if (randArr[j] == randArr[i])
{
for (k = j; k <= arrSize; k++)
{
temp = randNums(1,50);
temp = randArr[k];
randArr[k] = randArr[k + 1];
randArr[k + 1] = temp;
}
arrSize--;
}
else
j++;
}
}
.....
//generates random numbers between the inputed max and min
int randNums(int min, int max)
{
int result = 0, low = 0, high = 0;
if (min < max)
{
low = min;
high = max + 1;
}
else
{
low = max + 1;
high = min;
}
srand(time(NULL));
result = (rand() % (high - low)) + low;
return (result);
}
【问题讨论】:
-
srand(time(NULL));应该在开始时只调用一次以初始化 RNG。 -
@Osiris 我不明白你的意思。我在代码中只有一次。
-
但是每次使用
randNums生成随机数时,您都会调用srand。您应该从randNums中删除srand并将其放入main。 -
@Osiris 我把 srand 放在了主目录中。我把它放在正确的位置了吗?
-
请不要纠正帖子中的错误,只在你自己的代码中。人们不会明白你在问什么。回滚。现在可以看到,您每次调用
rand()之前都调用了srand()。