在C中生成不同的随机数组

时间:2018-11-04 21:49:48

标签: c random srand

我在主要函数中使用srand(time(NULL)),但无法生成两个随机数组。

我编写了一个函数,该函数将生成一个包含不同数字的随机数组。我的目标是生成介于1和数组大小之间的数字。但是当我两次调用此函数时,我得到的数组完全相同。

void randomArray(int *array,int size){
    srand(time(NULL));
    int i=0;
    int j=0;
    int randNumber;
    int test;
    while(i<size){
        test=0;
        while(test==0){
            test=1;
            j=0;
            randNumber=(rand()%(size))+1;
            while (j<i){
                if(array[j]==randNumber){
                    test=0;
                }
                j++;
            }
        }
        array[i]=randNumber;
        i++;
    }
}

示例输出;

Array1:13 18 2 4 15 9 14 7 16 17 20 19 6 10 1 8 3 5 12 11

Array2:13 18 2 4 15 9 14 7 16 17 20 19 6 10 1 8 3 5 12 11

我对此进行了一些研究,并了解了它的原因,因为srand(time(NULL))使用时间生成随机数,因此我得到了相同的数组。我认为我可以在它们之间放置延迟,但是那不是好的解决方案,因为我需要为不同的结果设置大约半秒的延迟。还有其他方法吗?

0 个答案:

没有答案