Guest User

Untitled

a guest
May 18th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.56 KB | None | 0 0
  1. #define R_A 16807L
  2. #define R_M 2147483647L
  3. #define R_Q 127773L
  4. #define R_R 2836L
  5.  
  6. LONG    gSeed = 1;
  7.  
  8. /******************************************************************************************/
  9.  
  10. LONG GetSRand(void)
  11. {
  12.     return gSeed;
  13. }
  14.  
  15. /******************************************************************************************/
  16.  
  17. void MySRand(LONG s)
  18. {
  19.     gSeed = s;
  20.     if (gSeed == 0)
  21.         gSeed = 1;
  22. }
  23. /******************************************************************************************/
  24.  
  25. LONG LongRandom(void)
  26. {
  27.     LONG    hi,lo,test;
  28.  
  29.     hi   = gSeed / R_Q;
  30.     lo   = gSeed % R_Q;
  31.     test = R_A * lo - R_R * hi;
  32.     if (test > 0)
  33.     gSeed = test;
  34.     else
  35.       gSeed = test + R_M;
  36.     return gSeed;
  37. }
  38.  
  39. /******************************************************************************************/
  40.  
  41. double DoubleRandom(void)
  42. {
  43.     return LongRandom() / (double) R_M;
  44. }
  45.  
  46. /******************************************************************************************/
  47.  
  48. short MyRandom(short max)
  49. {
  50.     return (short) (DoubleRandom() * max);
  51. }
  52.  
  53. /******************************************************************************************/
  54.  
  55. /* JAB 7/20/96 */
  56. /* Implemented Random Number Table to speed encryptions */
  57. /* short    gEncryptTable[512]; */
  58. short   far *gEncryptTable;
  59. void    InitializeEncryption();
  60.  
  61. void InitializeEncryption()
  62. {
  63.     int     i;
  64.     LONG    saveSeed;
  65.  
  66.     saveSeed = GetSRand();
  67.     MySRand(666666L);
  68.  
  69.     gEncryptTable = (short far *) NewPtrClear(sizeof(short)*512);
  70.  
  71.     for (i = 0; i < 512; ++i)
  72.         gEncryptTable[i] = MyRandom(256);
  73.  
  74.     MySRand(saveSeed);
  75. }
Advertisement
Add Comment
Please, Sign In to add comment