【发布时间】:2013-05-02 18:33:42
【问题描述】:
在下面,但它总是给我 42 作为 SIZE。我想用 srand(time(NULL)) 随机化 SIZE,但显然它不起作用,因为它低于 SIZE 的随机化。当我尝试在 SIZE 随机化之前添加它时,编译器会对我大喊大叫。你有什么想法可以改正吗?
int i,numberToBeFound;
int SIZE=(rand()%100)+1; // size can be in the range [1 to 100]
int *array2 = (int*) malloc(sizeof(int)*SIZE);
srand(time(NULL));
for(i=0;i<SIZE;i++) //fill the array with random numbers
array2[i]=rand()%100;
【问题讨论】:
-
调用
srand在你使用rand()之前。 -
如果我这样做,它会给我 15 个错误和 9 个警告
-
我认为他看到的错误是他将 srand 移动到 rand 之上时声明之前的代码。
-
那是因为编译器不接受混合声明和代码(C89,blech)。先声明所有变量。
-
如果您使用 C++ 工作,那么在您需要调用 rand() 之前将 srand() 的种子向上移动就可以了。但在 C 语言中,它是在执行代码语句之前声明所有局部变量。