INTEGER FUNCTION NDISC(N,P) C This routine randomly selects one from among N categories, where the C probabilities are proportional to the vector P. IMPLICIT REAL*8 (A-H,O-Z) DIMENSION P(N) DATA CC/1.00000008D0/ U=DRNUNF()*DSUM(N,P,1) AA=0.0D0 DO 10 I=1,N AA=AA+P(I) IF(U.LE.AA)GO TO 20 10 CONTINUE IF(U.GT.(AA*CC))GO TO 30 NDISC=N RETURN 20 NDISC=I RETURN 30 CALL TERM('LIMITS EXCEEDED IN NDISC') END