#include #include #include /* Usage: srand (time_seed ()); */ /* Choose and return an initial random seed based on the current time. Based on code by Lawrence Kirby . */ unsigned time_seed (void) { time_t timeval; unsigned char *ptr; unsigned seed; size_t i; timeval = time (NULL); ptr = (unsigned char *) &timeval; seed = 0; for (i = 0; i < sizeof timeval; i++) seed = seed * (UCHAR_MAX + 2U) + ptr[i]; return seed; }