subroutine rann1(moy,std,iseed,ranorm,n,irc) * implicit none * * CAUTION : N MUST BE EVEN * 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.) call ranset(iseed) * * Conversion de n en l'entier pair superieur * nn = ((n+1)/2)*2 * C Boucle d'initialisation des ranf dans un tableau intermediaire * do i=1,nn ranorm(i) = ranf() 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