4

我有一个简单的函数给我这个错误:

错误:“时间”之前的预期声明说明符或“...”

这是文件中的代码:

#include <stdlib.h>
#include <time.h>

srand(time(NULL));

float random_number(float min, float max) {
    float difference = (max - min);
    return (((float)(difference + 1)/RAND_MAX) * rand() + min);
}

我不明白为什么我会收到此错误。我在 Ubuntu 12.04 中使用 gcc 进行编译。

4

2 回答 2

8

在 C 语言中,所有在运行时执行的代码都必须在函数内部。将调用srand()放入 init 函数中。

于 2013-11-07T20:45:10.533 回答
2

您不能调用主函数范围之外的函数,此外,在函数 random_number 中使用它之前播种随机是没有意义的

您需要转到srand(time(NULL));主要功能,例如:

float random_number(float min, float max) {
    float difference = (max - min);
    return (((float)(difference + 1)/RAND_MAX) * rand() + min);
}

int main()
{
    srand(time(NULL));
    // your code which calls random_number here
}

另一种方法,不要改变主要的,但是:

static int isRandomInited = 0;
float random_number(float min, float max) {
    if (!isRandomInited) { // init random only 1 time
        srand(time(NULL));
        isRandomInited = 1;
    }
    float difference = (max - min);
    return (((float)(difference + 1)/RAND_MAX) * rand() + min);
}
于 2013-11-07T21:06:25.917 回答