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