random.f
上传用户:szhypcb168
上传日期:2007-01-06
资源大小:2187k
文件大小:1k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. C==========================================================================
  2. C
  3. C ROUTINE
  4. C RANDOM (LPC-10e Version 49)
  5. C
  6. C FUNCTION
  7. C
  8. C Pseudo random number generator.
  9. C
  10. C SYNOPSIS
  11. C function random()
  12. C
  13. C   formal 
  14. C                       data    I/O
  15. C       name            type    type    function
  16. C       -------------------------------------------------------------------
  17. C random i fun uniformly distributed
  18. C over -32768 to 32767
  19. c==========================================================================
  20. c
  21. c DESCRIPTION
  22. c
  23. c See reference.
  24. c
  25. c==========================================================================
  26. c
  27. c REFERENCE
  28. c
  29. c Knuth, The Art of Programming, Volume 2, p. 27.
  30. c
  31. c==========================================================================
  32. c
  33. function random ()
  34. implicit undefined(a-z)
  35. integer random, j, k, midtap, maxtap
  36. parameter (midtap=2, maxtap=5)
  37. integer y(maxtap), temp
  38. save j, k, y
  39. data y /-21161, -8478, 30892,-10216, 16950/
  40. data j/midtap/, k/maxtap/
  41. * simulate 2's complement 16-bit addition
  42. temp = and (y(k) + y(j), 65535)
  43. cAlli temp = iand (y(k) + y(j), 65535)
  44. if (temp .gt. 32767) temp = temp - 65536
  45. y(k) = temp
  46. random = temp
  47. k = k - 1
  48. if (k .le. 0) k = maxtap
  49. j = j - 1
  50. if (j .le. 0) j = maxtap
  51. return
  52. end