dimension x(10000) integer*4 a,b,nombre,t,w,intervalle(1000),totalfreq real extheorique,txtheorique,somme,iinterm,sigmax,moyenne,diff1,diff2 open(3,file='aleat2.res') write(*,*)'amore :' read(*,*)iamorce a=460 b=560 extheorique=(a+b)/2 txtheorique=sqrt(((float(b)-float(a))**2)/12) write(3,1010) write(3,1011) write(3,1012) write(3,1013) write(3,1011) write(3,1010) 1010 format(' ',12x,56('*')) 1011 format(' ',12x,'*',54(' '),'*') 1012 format(' ',12x,'* EXEMPLE DE GENERATION DE NOMBRES ALEATOIRES SUI -VANT *') 1013 format(' ',12x,'* UNE LOI RECTANGULAIRE SUR L INTERVALLE (460,560 -) *') write(3,1014) 1014 format(' ',///) write(3,2)extheorique,txtheorique 2 format(/,11x,' E(x)theorique : ',f7.2,14x,'T(x)theorique : ',f5.2) write(3,1015) 1015 format(' ',11x,'=============',24x,'=============') nombre=10 do 7 ij=1,3 totalfreq=0 write(3,11) 11 format(' ',//) nombre=nombre*10 write(3,211) 211 format(' ',23x,'###################################') write(3,210)nombre 210 format(' ',23x,'##',3x,i5,' NOMBRES ALEATOIRES',3x,'##') write(3,211) write(3,212) 212 format(' ',//) do 25 k=1,nombre x(k)=random(iamorce) 25 x(k)=a+(b-a)*x(k) if(ij.eq.3) then goto 111 endif write(3,35)(x(iu),iu=1,nombre) 35 format(' ',4x,10f7.1) 111 write(3,61) 61 format(//,17x,' **********************************************') write(3,60) 60 format(' ',17x,'* intervalle de classe * frequence absolue *') write(3,62) 62 format(' ',17x,'**********************************************') do 80 i=a,b-10,10 intervalle(i)=0 w=i+10 do 40 j=1,nombre if((x(j).ge.i).and.(x(j).lt.w)) then intervalle(i)=intervalle(i)+1 totalfreq=totalfreq+1 endif 40 continue write(3,70)i,w,intervalle(i) 70 format(' ',17x,'*',7x,'[',i3,'-',i3,'[',7x,'*',7x,i5,8x,'*') 80 continue write(3,62) write(3,456)totalfreq 456 format(' ',17x,'*',9x,'TOTAL',9x,'*',7x,i5,8x,'*') write(3,62) * * calcul de la moyenne et de t(x) * somme=0 iinterm=0 do 100 i=1,nombre 100 somme=somme+x(i) moyenne=somme/float(nombre) do 101 i=1,nombre 101 iinterm=iinterm+((x(i)-moyenne)**2) sigmax=sqrt(iinterm/float(nombre)) write(3,51)moyenne 51 format(//,' ',16x,'MOYENNE ---> ',f10.3) write(3,1019)sigmax 1019 format(' ',16x,'SIGMA --> ',f10.3) * * differences * diff1=abs(extheorique-moyenne) diff2=abs(txtheorique-sigmax) write(3,451)diff1 451 format(' ',16x,'| E(x)theorique-moyenne | --> ',f10.3) write(3,452)diff2 452 format(' ',16x,'| T(x)theorique-T(x)echantillon | --> ',f10.3) write(3,11) 7 continue stop end function random(x) integer a,x m=2 ** 20 fm=m a=2 ** 10 + 3 1 x=mod(a*x,m) fx=x random=fx/fm return end