real function gaussian()
  implicit none
  !	real rd

  real x1,x2,w,y1
  real y2
  real n1,n2
  integer use_last
  integer ii,jj

  use_last=0
  y2=0
  w=2.0
  if(use_last.ne.0) then
    y1=y2
    use_last=0
  else
    do while (w.ge.1.0)
      call random_number(n1)
      call random_number(n2)
      x1=2.0*n1-1.0
      x2=2.0*n2-1.0
      w = x1 * x1 + x2 * x2
    enddo
    w=((-2.0*log(w))/w)**0.5
    y1=x1*w
    y2=x2*w
    use_last=1
  endif
  gaussian=y1
end function
