使用C语言生成0到1之间的随机数的问题

时间:2010-09-04 17:20:17

标签: c

我正在尝试使用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:在函数'main'中: rand.c:21:警告:格式'%f'需要输入'double',但参数2的类型为'int' rand.c:顶级: rand.c:36:错误:'rand_md'的冲突类型 rand.c:21:错误:先前的'rand_md'隐式声明在这里

我的代码出了什么问题?

最诚挚的问候,

3 个答案:

答案 0 :(得分:6)

当您使用函数而不首先声明它时,C将假定它返回int。要解决此问题,您必须先声明rand_md的方法签名,然后才能在main()中调用它。

main之前或在头文件中添加类似的内容:

float rand_md();

答案 1 :(得分:1)

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);
}

答案 2 :(得分:0)

您可以使用随机(最大数量)来实现此目的。