为什么在生成随机浮点数时会收到此错误?

时间:2014-03-05 03:51:33

标签: c random

尝试生成伪随机浮点数btwn 0和1.运行代码时出现此错误:

'RAND_MAX'未声明(首次使用此功能)

#include <stdio.h>
#include <time.h>

int main(test, numpoints, numtrials, dimension){

    //generate a random number
    srand(time(NULL));
    float r = (float)(rand()/RAND_MAX +1);


    printf("%.6f", r);
    printf("\n");
}

4 个答案:

答案 0 :(得分:2)

  1. 要在C中使用RAND_MAX,您需要包含其标题:

    #include <stdlib.h>
    
  2. rand()/RAND_MAX是一个整数除法,如果你想要浮动除法,你应该首先将其转换为float,然后除以:(float)(rand()) / RAND_MAX

  3. 您需要将主要定义为:

    int main ( int arc, char **argv )
    

答案 1 :(得分:1)

RAND_MAXstdlib之内。你需要加入它。

#include <stdlib.h>

答案 2 :(得分:1)

(rand() / RAND_MAX)是整数除法,等于零。然后添加1,然后转换为float,给你1.0。如果你想要浮动除法,你必须首先进行隐蔽,然后除以:(float)(rand()) / RAND_MAX。 。

另外,您不包括stdlib,而您对[{1}}的论据是错误的。

答案 3 :(得分:0)

尝试导入stdlib.h。这就是C ++所需要的,但我不完全确定C。