subroutine rann1(moy,std,iseed,ranorm,n,irc) * implicit none * * CAUTION : N MUST BE EVEN C EXTERNAL JMRANF DOUBLE PRECISION JMRANF * real moy,std integer iseed,n,irc real ranorm(n) * integer nn real rr,theta real pi integer i real temp1,temp2 * pi = acos(-1.) CCCCCCCCCCCCCCCCCCC SX5 CC on utilise la fonction ranf de JMT donc independante de l'ordinateur CCCCCCCCCCCCCCCCCCC SX5 * * Conversion de n en l'entier pair superieur * nn = ((n+1)/2)*2 do i=1,nn ranorm(i) = jmranf() end do C On en deduit maintenant un tableau de nombres gaussiens do i=1,nn/2 temp1 = ranorm(i) temp2 = ranorm(i+nn/2) rr = sqrt(-2.*log(temp1)) Theta = 2*PI*temp2 ranorm(i) = (rr * cos(Theta) + moy) * std ranorm(i+nn/2) = (rr * sin(Theta) + moy) * std end do * end