random.c
上传用户:tsjrly
上传日期:2021-02-19
资源大小:107k
文件大小:1k
源码类别:

语音压缩

开发平台:

C/C++

  1. /**************************************************************************
  2. *
  3. * ROUTINE
  4. * RANDOM2 (LPC-10e Version 49)
  5. *
  6. * FUNCTION
  7. *
  8. * Pseudo random number generator.
  9. *
  10. * SYNOPSIS
  11. * function random2()
  12. *
  13. *   formal 
  14. *                       data    I/O
  15. *       name            type    type    function
  16. *       -------------------------------------------------------------------
  17. * random2 i fun uniformly distributed
  18. * over -32768 to 32767
  19. ***************************************************************************
  20. *
  21. * DESCRIPTION
  22. *
  23. * See reference.
  24. *
  25. ***************************************************************************
  26. *
  27. * CALLED FROM
  28. *
  29. * noise2 biterror
  30. *
  31. * CALLS
  32. *
  33. *
  34. ***************************************************************************
  35. *
  36. * REFERENCE
  37. *
  38. * Knuth, The Art of Programming, Volume 2, p. 27.
  39. *
  40. **************************************************************************/
  41. # define MIDTAP 2
  42. # define MAXTAP 5
  43. random2()
  44. {
  45.   static int j = MIDTAP-1, k = MAXTAP-1;
  46.   static int y[MAXTAP] = {-21161,-8478,30892,-10216,16950};
  47.   int temp;
  48.   /* * simulate 2's complement 16-bit addition  */
  49.   temp = (y[k] + y[j]) & 65535;
  50.   temp = (temp > 32767 ? temp - 65536 : temp);
  51.   y[k] = temp;
  52.   k = (--k < 0 ? MAXTAP-1 : k);
  53.   j = (--j < 0 ? MAXTAP-1 : j);
  54.   return(temp);
  55. }