C_______________________________________________________________________________
C
C     Este programa calcula el valor de Pi mediante un metodo de Monte-Carlo
C_______________________________________________________________________________

      implicit real*8 (a-h,o-z)
      data pi /3.14159265358979324d+00/

    1 write(6,100)
  100 format(/,' Introduce numero de puntos: ',$)
      read(5,*) np
      if (np.le.0) goto 1

    2 write(6,200)
  200 format(/,' Introduce semilla: ',$)
      read(5,*) iseed
      if (iseed.le.0) goto 2

c.....Inicializamos la generacion de Nos. aleatorios
      call srand(iseed)

c.....Simulacion
      nf=0
      do ip=1,np
        x=dble(rand())
        y=dble(rand())
        if (x*x+y*y.le.1.0d+00) nf=nf+1   !(x,y) en el circulo de radio 1
      enddo

      pi_aprox= 4.0d+00 * (dble(nf) / dble(np))
      error_relativo=(pi_aprox-pi)/pi

c.....Escribimos resultados
      write(6,300) pi_aprox,pi,error_relativo*100.
  300 format(//,' RESULTADOS:',/
     .          '    pi (aprox )    = ',f20.16,/
     .          '    pi (exacto)    = ',f20.16,/
     .          '    error relativo = ',f8.4,' %')

      read(5,'()')
      call exit(0)

      end
