1 #include <time.h> 2 3 #ifdef __STDC__ make_new_seed()4int make_new_seed() 5 #else 6 int make_new_seed() 7 #endif 8 { 9 time_t tp; 10 struct tm *temp; 11 unsigned int temp2, temp3; 12 static unsigned int temp4 = 0xe0e1; 13 14 time(&tp); 15 temp = localtime(&tp); 16 17 temp2 = (temp->tm_sec<<26)+(temp->tm_min<<20)+(temp->tm_hour<<15)+ 18 (temp->tm_mday<<10)+(temp->tm_mon<<6); 19 temp3 = (temp->tm_year<<13)+(temp->tm_wday<<10)+(temp->tm_yday<<1)+ 20 temp->tm_isdst; 21 temp2 ^= clock()^temp3; 22 23 temp4 = (temp4*0xeeee)%0xffff; 24 temp2 ^= temp4<<16; 25 temp4 = (temp4*0xaeee)%0xffff; 26 temp2 ^= temp4; 27 28 temp2 &= 0x7fffffff; 29 30 return temp2; 31 } 32 33 34 #if 0 35 main() 36 { 37 printf("%u\n", make_new_seed()); 38 } 39 #endif 40 41 42