代码之家  ›  专栏  ›  技术社区  ›  Yongwei Xing

使用C语言生成介于0和1之间的随机数时出现问题

c
  •  1
  • Yongwei Xing  · 技术社区  · 14 年前

    我试图用rand()函数生成一些数字,如下所示:

    int main()
    {
        int i=0
        for(i=0;i<20;i++)
        {
        printf("%f\n",rand_md());
        }
        return 0;
    }
    
    
    
    float rand_md()
    {
        return (float)rand()/(RAND_MAX+1.0);
    }
    

    但是当我运行gcc rand.c时,得到如下错误: rand.c:21:警告:格式%f要求类型为double,但参数2的类型为int rand.c:在顶层: rand.c:21:错误:rand\u md的上一个隐式声明在这里

    我的代码怎么了?

    致以最诚挚的问候,

    3 回复  |  直到 14 年前
        1
  •  6
  •   zenazn    14 年前

    当您使用一个函数而不首先声明它时,C将假定它返回一个 int . 要解决这个问题,您必须声明签名的方法 rand_md 在你打电话之前 main()

    在前面添加类似的内容 main

    float rand_md();
    
        2
  •  1
  •   Jacob    14 年前
    double rand_md()
    {
        return (double )rand()/(RAND_MAX+1.0);
    }
    

    现在, rand_md double 而不是 float .

    另外,由于您还没有将其包含在文章中,因此您应该在发布之前加入一个函数原型 main() int i = 0 . 更正后的代码如下所示:

    double rand_md();    
    
    int main()
    {
        int i=0;
        for(i=0;i<20;i++)
        {
        printf("%f\n",rand_md());
        }
        return 0;
    }
    
    double rand_md()
    {
        return (double )rand()/(RAND_MAX+1.0);
    }
    
        3
  •  0
  •   user379888 user379888    14 年前

    为此,可以使用random(数字的最大大小)。