前幾天在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