繁体   English   中英

C语言生成0到1之间的兰德数的问题

[英]problem with generating rand number between 0 and 1 using C language

我正在尝试使用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'隐式声明在这里

我的代码有什么问题?

最好的祝福,

当您使用函数而不先声明时,C会假定它返回一个int 要解决此问题,必须在main()调用rand_md之前声明方法签名。

main或头文件中添加以下内容:

float rand_md();
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);
}

您可以为此使用随机数(最大数字)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM