所以我有一个从 0 到 27 的整数数组。
for(i<0; i<28; i++)
{
ListId[i] = i;
}
我想做的是从那个数组中挑选一个数字,然后在另一个数组中随机重新排序。
我试图用一个标志,数字 -1 替换已经选择的数字:
for(i<0; i<28; i++)
{
RandomId[i] = i;
ListId[i] = i;
}
srand(time(NULL));
for(i=0; i<28; i++)
{
res = rand() % 27;
aux = ListId[res];
if (ListId[res] != -1)
{
RandomId[i] = aux;
ListId[res] = -1;
}
else
i--;
}
printf("New list of integers: ");
for(i=0; i<28; i++)
{
printf("%d | ", RandomId[i]);
}
但最终陷入死循环。
希望有人能帮助我。
提前致谢
最佳答案
注意您的第一个 for 循环:for(i<0;i<28;i++)
注意你的:res = rand() % 27;
... 应该是 28
.
范围% N
是 0 到 (N-1),因此您的 27 个结果的范围是 0-26。
关于c - 如何使用 C 从列表中只选择一个随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101416/