windows下srand48()和drand48()的问题

时间:2021-12-23 07:00:45

前几天在windows下用MINGW编译一段代码时,出现了错误提示说srand48()和drand48()的未定义,去网上搜了下,发现好多人也遇到了同样的问题,大约有两种解决方案:

  • 第一个就是说gcc必须是官方的,我用的事是tdm-mingw,而官方的好像是dw版(安装mingw的时候可以选择这项),我重新装了下还是有错误提示.
  • 第二个是说装个gnuwin,我装了后不知道怎么配置,因为mingw里面好多库和gnuwin里面是一样的.

还有就是用cygwin直接编译就可以只不过要用到cygwin1.dll(位于cygwin的安装目录下)才可以运行在windows下

后来去网上找代码,发现都不能用后来自己就看着srand48()和drand48()的说明自己实现了下

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