salut tt le monde j'ai besion d'une fonction RAND avec une tres tres qrang periode pour un programme basse sur la methode monte carlo
Version imprimable
salut tt le monde j'ai besion d'une fonction RAND avec une tres tres qrang periode pour un programme basse sur la methode monte carlo
Tu devrais trouver ici ce que tu cherche : http://jblevins.org/mirror/amiller/
merci mais je sius un debutan dans fortran plus je travail avec Fortran 77 si tu peut me donne un donne un programme dans le quelle on utilise une fonction RAND de tres qrand period comme se programme Qui calcule la valeur de PiCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 PROGRAM TEST1 DOUBLE PRECISION X,Y,PI,NS,NT,I real ran2 c************************************************************** OPEN (1,FILE='PI.DAT') c************************************************************** NT=2000000 NS=0. DO I=1,NT X=2*RAN2(idum)-1 Y=2*RAN2(idum)-1 IF(X**2+Y**2.LE.1)THEN NS=NS+1 ENDIF END DO PI=4*(NS/NT) write(*,*)PI END FUNCTION ran2(idum) INTEGER idum,IM1,IM2,IMM1,IA1,IA2,IQ1,IQ2,IR1,IR2,NTAB,NDIV REAL ran2,AM,EPS,RNMX PARAMETER (IM1=2147483563,IM2=2147483399,AM=1./IM1,IMM1=IM1-1, *IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211,IR2=3791, *NTAB=32,NDIV=1+IMM1/NTAB,EPS=1.2e-7,RNMX=1.-EPS) INTEGER idum2,j,k,iv(NTAB),iy SAVE iv,iy,idum2 DATA idum2/123456789/, iv/NTAB*0/, iy/0/ if (idum.le.0) then idum=max(-idum,1) idum2=idum do 11 j=NTAB+8,1,-1 k=idum/IQ1 idum=IA1*(idum-k*IQ1)-k*IR1 if (idum.lt.0) idum=idum+IM1 if (j.le.NTAB) iv(j)=idum 11 continue iy=iv(1) endif k=idum/IQ1 idum=IA1*(idum-k*IQ1)-k*IR1 if (idum.lt.0) idum=idum+IM1 k=idum2/IQ2 idum2=IA2*(idum2-k*IQ2)-k*IR2 if (idum2.lt.0) idum2=idum2+IM2 j=1+iy/NDIV iy=iv(j)-idum2 iv(j)=idum if(iy.lt.1)iy=iy+IMM1 ran2=min(AM*iy,RNMX) return END