C语言 如何才能生成不重复的乱数?

#include
#include
#include
#include
int main(void)
{
int a[10], i, j, k;
srand(time(NULL));
printf("┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓");

    printf("\n");

    for (i = 0;i < 10;a[i++] = rand() % 100);

for (i = 0;i<10;i++) 
{
    for (k = i, j = k + 1;j<10;j++)
        if (a[k]>a[j]) k = j;
    if (i != k)
    {
        j = a[i];
        a[i] = a[k];
        a[k] = j;
    }


    printf("┃%3d ", a[i]);
}
printf("┃\n┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛");
printf("\n");
_getch();
return 0;

}

生成随机数的里面,加个判断,和之前已经放入数组的元素进行比较判断。

 #include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
int main(void) 
{
    int a[10], i, j, k;
    srand(time(NULL));
    printf("┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓");

    printf("\n");

    for (i = 0;i < 10;i++)
    {
        a[i] = rand() % 100;
        for(j=0;j<i;j++)
        {
            if(a[i]==a[j])
            {
                i--;
            }
        }
    }

    for (i = 0;i<10;i++) 
    {
        for (k = i, j = k + 1;j<10;j++)
            if (a[k]>a[j]) k = j;
        if (i != k)
        {
            j = a[i];
            a[i] = a[k];
            a[k] = j;
        }


        printf("┃%3d ", a[i]);
    }
    printf("┃\n┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛");
    printf("\n");
    _getch();
    return 0;
}

思路就是生成的随机数和原来已经存存在的数进行比较,存在就不要加进去了

使用set进行存储去重