uni_rand.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:1k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = uni_rand.cpp
  3. //
  4. #include "uni_rand.h"
  5. #define _MULT 16807
  6. #define _MOD 2147483647
  7. #define _HALF_MOD 1073741823
  8. #define _FMOD 2147483647.0
  9. #define _SQUOT 127773
  10. #define _SREM 2836
  11. //---------------------------------------------------
  12. bit_t RandomBit(long *seed)
  13. {
  14.  long temp;
  15.  temp = (*seed)/_SQUOT;
  16.  *seed = _MULT * (*seed - temp * _SQUOT)
  17.          - _SREM * temp;
  18.  if(*seed<0) *seed += _MOD;
  19.    if(*seed > _HALF_MOD)
  20.       return(1);
  21.    else
  22.       return(0);
  23.  }
  24. //---------------------------------------------------
  25. unsigned long RandomLong(long *seed)
  26. {
  27.    long temp;
  28.    temp = (*seed)/_SQUOT;
  29.    *seed = _MULT * (*seed - temp * _SQUOT)
  30.          - _SREM * temp;
  31.    if(*seed<0) *seed += _MOD;
  32.    return(*seed);
  33.  }
  34. //--------------------------------------------- 
  35. float UniformRandom(long *seed)
  36. {
  37.  long temp;
  38.  float result;
  39.  temp = (*seed)/_SQUOT;
  40.  *seed = _MULT * (*seed - temp * _SQUOT)
  41.          - _SREM * temp;
  42.  if(*seed<0) *seed += _MOD;
  43.  result = float(*seed/_FMOD);
  44.  return(result);
  45.  }
  46.  
  47.  
  48. double DoubleUniformRandom(long *seed)
  49. {
  50.  long temp;
  51.  double result;
  52.  temp = (*seed)/_SQUOT;
  53.  *seed = _MULT * (*seed - temp * _SQUOT)
  54.          - _SREM*temp;
  55.  if(*seed<0) *seed += _MOD;
  56.  result = *seed/double(_FMOD);
  57.  return(result);
  58.  }