簡體   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