!     +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
!                        ²ú Éú(0,1) ¾ùÔÈ·Ö²¼Ëæ»úÊý×Ó³ÌÐò 
!     +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
	  function ran1(idum)	 
	  integer idum,ia,im,iq,ir,ntab,ndiv 
 	  real ran1,am,eps,rnmx 
	  parameter(ia=16807,im=2147483647,am=1./im,iq=127773,ir=2836,& 
	            ntab=32,ndiv=1+(im-1)/ntab,eps=1.2e-7,rnmx=1.-eps) 
	  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 j=ntab+8,1,-1 
	         k=idum/iq 
		     idum=ia*(idum-k*iq)-ir*k 
		     if (idum.lt.0) idum=idum+im 
		     if (j.le.ntab) iv(j)=idum 
		  end do 
		  iy=iv(1) 
	  end if 
	  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) 
	  end 
!     ----------------------------------------------------------------------- 