Rand功能在C中不会起作用

时间:2015-05-07 15:42:56

标签: c random srand

我想用随机数填充表并计算填充它所需的时间。

时间似乎没问题,但在我打印表格之后,这些数字并不是随机的。

它打印:0 1 2 3 4 5 6 7 8 9

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int  getUniqueNumber(int *p, int i);

int main()
{
    int i, p[N];
    long t0, t1, dt;

    printf("Getting %i random numbers...",N);
    time(&t0);
    for (i=0; i<N; i++)
       p[i] = getUniqueNumber(p,i);
    time(&t1);
    printf("Task Completed.\n\n");
    dt = t1 - t0;
    printf("Calc time = %ld\n",dt);

    for(i=0; i<N; i++)
       printf("%d ",i);

    return 0;
}

int  getUniqueNumber(int *p, int i)
{

    int x, j, found;
    do
    {
        srand(time(NULL));
        x = rand();
        found = 0;
        j = 0;
        while (j<=i && found == 0)
        {
            if (p[j] == x)
               found = 1;
            else
               j++;
         }
     }while (found == 1);

     return x;
}

注意:#define中的N将为30000.

我轻松做了10。

1 个答案:

答案 0 :(得分:3)

您只应拨打srand(time(NULL));一次。