INTEGER j,k,iv(NTAB),iy SAVE iv,iy
DATA iv /NTAB*0/, iy /0/ if (idum.le.0.or.iy.eq.0) then idum=max(-idum,1) do 11 j=NTAB+8,1,-1 k=idum/IQ
11 idum=IA*(idum-k*IQ)-IR*k if (idum.lt.0) idum=idum+IM continue if (j.le.NTAB) iv(j)=idum iy=iv(1) endif
k=idum/IQ
idum=IA*(idum-k*IQ)-IR*k if (idum.lt.0) idum=idum+IM j=1+iy/NDIV iy=iv(j) iv(j)=idum
ran1=min(AM*iy,RNMX)
return END
11