Program MONTECARLO_HIT_AND_MISS_1var Implicit Double precision (A-H,o-z) DOUBLE PRECISION g ,a,b,c,p,r,s ,u,v,pi integer n , na ! Definimos el itervalo de integracion a,b ! y la altura "c" maxima que alcanza la curva ! a integrar. a=0d0 b=1d0 c=1d0 na=0 ! Ponemos un valor inicial para n n=10 ! Creamos un archivo en Excel sobre el que escribiremos ! los resultados . open(60,File="ejerc10aciertfallos1var.xls") ! Empezamos a contar el tiempo call cpu_time(start) ! Iniciamos un bule para j , que va a hacer el calculo ! para diferentes valores de n ( el programa se detendra ! con el valor que introducimos en la sentencia "if" de mas abajo) ! el valor de la derecha tiene que ser mayor que el que pongamos en ! el bloque if do j=n,10000000000 ! para este valor de "n" calculamos las variables aleatorias do 1 i=1,n u=rand() v=rand() ! if (g(a+(b-a)*u).gt.c*v) na=na+1 1 continue p= real (na)/n r=(b-a)*c*p s=sqrt(p*(1.-p)/n)*c*(b-a) ! Escribimos el numero de iteraciones (N) , ! el resultado (r) y el error (s) write(60,20)n,r,s ! ponemos a la derecha de .gt. el número de iteraciones deseadas if (n.gt.1d7) go to 30 ! Seguimos aumentando "n" si es suficientemente pequeña n=n*10 na=0 enddo ! Acabamos de contar el tiempo 30 call cpu_time(finish) write(60,*)"Temps = ",finish-start ,"s" ! cerramos el archivo Excel close(60) ! Introducimos el formato que queremos para nuestros resultados 20 Format(I20,4X,F20.14,4X,E20.14) end ! Definimos la funcion a integrar Function g(x1) Implicit Double Precision (A-H,O-Z) g=exp(-x1**2)*cos(x1*x1) end