【发布时间】:2019-06-04 16:13:30
【问题描述】:
我的问题是我无法确定如何确保 rand 函数不会为 2 个不同的单元格提供相同的数字,如果可以,我如何在不获取其他单元格中已经存在的数字的情况下更改它。( if(arr[j] != -1) 是因为我有其他函数用 (-1) 填充一些单元格
这是我尝试做的一个版本(所有 // 都是不同尝试的剩余部分)
void fillArr(int arr[], int n)
{
int i,j=0;
for (i = 0; i < n; i++)
{
while (arr[j] == arr[j + 2] &&j + 2<n)
{
//srand(time(NULL));
if (arr[j] != -1)
{
if (j % 2 == 0)
{
arr[j] = rand() % (N - 1);
if (arr[j + 2] != -1)
arr[j + 2] = rand() % (N - 1);
//arr[i] = rand() % (N - 1)-rand()%(i-1);
srand(time(NULL));
}
else
{
arr[j] = rand() % (N - i);
arr[j + 2] = rand() % (N - 1);
//arr[i] = rand() % (N - 1) - rand() % (i +1);
//srand(time(NULL));
}
}
j++;
}
}
}
【问题讨论】:
-
您必须检查已分配的号码,看看新的
rand()是否与现有号码重复。显示您现在拥有的代码。 -
因为您在正确制定需求方面存在问题。您不需要生成,而是要 shuffle 数字。
-
随机数的范围是多少?
array[10]会用数字 0..9 填充吗? -
如果您没有展示需要帮助的程序,这不是 C 问题。如果您在开发算法时遇到问题,请标记问题。