C HISTOGRAM FOR RNOR
C
      REAL    R,RNOR,RSTART,RSEED
      INTEGER ISEED,I,J,H(32),NR,INBIN
C
      ISEED = 305
      RSEED = RSTART(ISEED)
CCCCCC  100 WRITE (*,*) 'EX 10.1: ENTER NUMBER OF NORMALS : '
      DO 200 I = 1,32
          H(I)=0
  200 CONTINUE
CCCCC      READ (*,*) NR
      WRITE (*,*) 'RUNNING 10,000 NORMALS INTO 32 BINS...'
      NR = 10000
      IF (NR .LE. 0) STOP
      DO 1 I = 1,NR
          R = RNOR()
          J = INBIN(-3.0,3.0,32,0.2,R)
          H(J) = H(J)+1
    1 CONTINUE
C
      DO 3 I = 1,32
          WRITE (*,*) I,H(I)
    3 CONTINUE
C
      WRITE (*,*)
      WRITE (*,*) 
     *   'REFERENCE RESULTS (PARTIAL-LAST 10 LINES) FROM IBM PC/AT'
      WRITE (*,*)'          23         339'
      WRITE (*,*)'          24         289'
      WRITE (*,*)'          25         199'
      WRITE (*,*)'          26         131'
      WRITE (*,*)'          27          84'
      WRITE (*,*)'          28          39'
      WRITE (*,*)'          29          35'
      WRITE (*,*)'          30          31'
      WRITE (*,*)'          31          11'
      WRITE (*,*)'          32          17'
      STOP
      END
C
      INTEGER FUNCTION INBIN (XMIN,XMAX,NBINS,WIDTH,DATA)
C
C This function takes a real value in DATA, and finds
C the correct bin for it.  Vales below XMAX come back
C in 1.  Values above XMAX come back in NBINS.
C
      INTEGER NBINS
      REAL    XMIN,XMAX,WIDTH,DATA
      IF (DATA .LT. XMIN) THEN
         INBIN = 1
      ELSE IF (DATA .GE. XMAX) THEN
         INBIN = NBINS
      ELSE
         INBIN = 2 + (DATA-XMIN)/WIDTH
      ENDIF
      RETURN
      END
