random-word: Seed using gettimeofday
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Sat, 13 Mar 2010 15:56:34 +0000 (07:56 -0800)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Sat, 13 Mar 2010 15:56:34 +0000 (07:56 -0800)
Seed using gettimeofday(2) rather than time(2).

Seeding with time(2) gave some humorous results because we could get the
same word back multiple times if the program was invoked multiple times
a second.

random-word.c

index b55bd1d..d751d06 100644 (file)
@@ -2,7 +2,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <time.h>
+#include <sys/time.h>
 
 #define DICT "/usr/share/dict/linux.words"
 #define STARTING_SZ 8192
@@ -91,7 +91,10 @@ int main(void)
        FILE *fp;
        const char *word;
        struct dict *dict;
-       srandom(time(NULL));
+       struct timeval tv;
+
+       gettimeofday(&tv, NULL);
+       srandom(tv.tv_usec * tv.tv_sec);
 
        fp = fopen(DICT, "r");
        if (! fp) {