我想用随机数填充表并计算填充它所需的时间。
时间似乎没问题,但在我打印表格之后,这些数字并不是随机的。
它打印: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。
答案 0 :(得分:3)
您只应拨打srand(time(NULL));
一次。