subroutine unifgl(a,c,m,ix,u)
double precision a, c, m, ix
intefer k1
real u
ix = a * ix + c
k1 = ix / m
ix = ix - k1 * m
u = ix / m
end
Cette routine, par l'utilisation des variables double precision
permet de traiter convenablement les dépassements de éventuels sur
les machines de 32 bits.
Application : , et .
subroutine unif(ix,u)
k1 = ix/127773
ix = 16807*(ix-k1*127773)-k1*2836
if (ix.lt.0) ix = ix+2147483647
u = ix*4.656612875e-10
end
Comparer les résultats obtenus pour 1000000 tirages avec le programme généraliste et le programme ci-dessus. (Si l'initialisation se fait avec la même racine, il faut que les deux suites obtenues soient identiques).