diff --git a/ChangeLog b/ChangeLog index f9345b7ea..51c78ae49 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-11-12 Alexandre Duret-Lutz + * configure.ac: Check for srand48 and drand48. + * src/misc/random.cc (srand, drand): Use srand48 and drand48 if + available. + * src/tgbaalgos/randomgraph.cc, src/tgbaalgos/randomgraph.hh: New files. * src/tgbaalgos/Makefile.am (tgbaalgos_HEADERS) (libtgbaalgos_la_SOURCES): Add them. diff --git a/configure.ac b/configure.ac index a1f9c79d9..6c7537efa 100644 --- a/configure.ac +++ b/configure.ac @@ -45,6 +45,8 @@ AX_CHECK_BUDDY AX_CHECK_LBTT AX_CHECK_GSPNLIB +AC_CHECK_FUNCS([srand48 drand48]) + AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL diff --git a/src/misc/random.cc b/src/misc/random.cc index 8fede2fda..5682f3167 100644 --- a/src/misc/random.cc +++ b/src/misc/random.cc @@ -27,24 +27,30 @@ namespace spot void srand(unsigned int seed) { +#if HAVE_SRAND48 && HAVE_DRAND48 + ::srand48(seed); +#else ::srand(seed); +#endif } double drand() { +#if HAVE_SRAND48 && HAVE_DRAND48 + return ::drand48(); +#else double r = ::rand(); return r / (1.0 + RAND_MAX); +#endif } int mrand(int max) { - int res = static_cast(max * drand()); - return res; + return static_cast(max * drand()); } - int rrand(int min, int max) {