c - 优化C语言的一个不重复的随机数代码

标签 c random

我编写了一个代码,它将在屏幕上显示 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/

相关文章:

c - C 编译器优化的基准

c - c 中未处理的异常

php - 随机数但有偏差

java - 使用 getInt(int n) 方法获取 Java 的 RNG 种子

C++ 深入了解 rand() 和 srand()

常量指针与常量值指针

c - memcpy一个子串

c - OpenMP 中的并行 RSA 加密

java - 如何获得范围内为负数的随机数?

random - 如何在DrScheme R5RS中使用 "random"函数