2014-03-05 33 views
1

試圖當我運行代碼以產生僞隨機浮點數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"); 
} 
+0

對不起 - 在將它粘貼到stackoverflow之前意外地將其剪下。 – hannah

回答

2
  1. 要使用RAND_MAX在C,你需要包括它的頭:

    #include <stdlib.h> 
    
  2. rand()/RAND_MAX是整數除法,如果你想˚F loating師,你應該把它隱蔽於float,然後再劃分:(float)(rand())/RAND_MAX

  3. 您需要定義你的主要爲:

    int main (int arc, char **argv) 
    
+2

還有更大的問題。 –

+0

@ShafikYaghmour請詳細解釋。 – herohuyongtao

+0

這是真的。現在我只得到0.0000 – hannah

1

RAND_MAX是內stdlib。你需要包含它。

#include <stdlib.h> 
0

嘗試導入stdlib.h。多數民衆贊成什麼是需要在C + +但我不完全確定關於C.

+0

這在C中是一樣的 – Greg

1

(rand()/RAND_MAX)是一個整數除法,並將等於零。然後添加1,然後轉換爲浮點數,給你1.0。如果你想浮動分割,你必須首先轉換,然後分割:(float)(rand())/RAND_MAX。 。 。

另外,您不包括stdlib,您的參數main是錯誤的。

相關問題