windows下srand48()和drand48()的問題


前幾天在windows下用MINGW編譯一段代碼時,出現了錯誤提示說srand48()和drand48()的未定義,去網上搜了下,發現好多人也遇到了同樣的問題,大約有兩種解決方案:

  • 第一個就是說gcc必須是官方的,我用的事是tdm-mingw,而官方的好像是dw版(安裝mingw的時候可以選擇這項),我重新裝了下還是有錯誤提示.
  • 第二個是說裝個gnuwin,我裝了后不知道怎么配置,因為mingw里面好多庫和gnuwin里面是一樣的.

還有就是用cygwin直接編譯就可以只不過要用到cygwin1.dll(位於cygwin的安裝目錄下)才可以運行在windows下

后來去網上找代碼,發現都不能用后來自己就看着srand48()和drand48()的說明自己實現了下

#ifndef DRAND48_H  
#define DRAND48_H  
  
#include <stdlib.h>  
  
#define m 0x100000000LL  
#define c 0xB16  
#define a 0x5DEECE66DLL  
  
static unsigned long long seed = 1;  
  
double drand48(void)  
{  
    seed = (a * seed + c) & 0xFFFFFFFFFFFFLL;  
    unsigned int x = seed >> 16;  
    return  ((double)x / (double)m);  
      
}  
  
void srand48(unsigned int i)  
{  
    seed  = (((long long int)i) << 16) | rand();  
}  
  
#endif  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM