我编写了一个代码,它将在屏幕上显示 10 个不重复的随机数字。我想知道我们是否可以优化代码,或者您是否有更好、更简单的方法来完成此请求。 谢谢!!
int main(){
int nbr = 0; srand(time(NULL));
int arr[10], i, j, flag;
for (i = 0; i < 10; i++)
{
do
{
nbr = rand() % 10 + 1;
flag = 1;
for (j = 0; j < i; j ++)
{
if (nbr == arr[j])
{
flag = 0;
break;
}
}
} while (!flag);
arr[i] = nbr;
}
for (i = 0; i < 10; i++)
{
printf("%5d", arr[i]);
}
system("PAUSE");
return 0;
}
最佳答案
所以,如果我明白你在这里想做的事情就是:
以随机顺序生成 1 到 10 之间的数字数组(给定 rand() % 10 + 1
)
我建议使用以下算法,而不是反复试验:
- 用 1...10 填充
arr
- 随机播放
arr
这会运行得更快
关于c - 优化C语言的一个不重复的随机数代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021646/