rand_r.c raw

   1  #include <stdlib.h>
   2  
   3  static unsigned temper(unsigned x)
   4  {
   5  	x ^= x>>11;
   6  	x ^= x<<7 & 0x9D2C5680;
   7  	x ^= x<<15 & 0xEFC60000;
   8  	x ^= x>>18;
   9  	return x;
  10  }
  11  
  12  int rand_r(unsigned *seed)
  13  {
  14  	return temper(*seed = *seed * 1103515245 + 12345)/2;
  15  }
  16