swrand.c 772 B

123456789101112131415161718192021222324252627
  1. /************************************************************************
  2. * AUTHOR: NiuJiuRu
  3. * FILENAME: swrand.c
  4. * DESCRIPTION: 随机数产生函数
  5. * NOTE:
  6. * HISTORY:
  7. * 1, [2010-08-23] created by NiuJiuRu
  8. ************************************************************************/
  9. #include "swapi.h"
  10. #include "swrand.h"
  11. /* 产生一个特定范围内的随机数, 并返回结果 */
  12. unsigned int xrand32(unsigned int range)
  13. {
  14. struct timespec ts = {0};
  15. unsigned int randNum = 0;
  16. if((int)range < 0) return -1;
  17. clock_gettime(CLOCK_REALTIME, &ts);
  18. srand((unsigned int)(ts.tv_sec + ts.tv_nsec + rand()));
  19. if(range == 0) randNum = (unsigned int)((rand() << 16) | rand());
  20. else randNum = ((unsigned int)((rand() << 16) | rand())) % range;
  21. return randNum;
  22. }