#include <stdio.h> #include <time.h> static unsigned int y = 1U; unsigned int rand_r(unsigned int *seedp) { *seedp ^= (*seedp << 13); //这里居然用异或和位移来实现,感觉很强大 *seedp ^= (*seedp >> 17); *seedp ^= (*seedp << 5); return *seedp; } unsigned int rand(void) { return rand_r(&y); } void srand(unsigned int seed) { y = seed; } int main(void) { int i ; srand(time(NULL)) ; for(i = 0 ; i < 100 ; i++) printf("%d\n", rand() % 100) ; }
执行结果是随机产生的100个数。