Bonsoir
je veux générer des nombres aléatoires pour qu'un variable q passe de qmin à qmax puis revient à qmin, tous ça pour une série de 12 valeurs croissantes entre qmin et qmax et 12 valeur décroissantes entre qmax et qmin.
Bonsoir
je veux générer des nombres aléatoires pour qu'un variable q passe de qmin à qmax puis revient à qmin, tous ça pour une série de 12 valeurs croissantes entre qmin et qmax et 12 valeur décroissantes entre qmax et qmin.
Bonjour,
Et bien il te suffit simplement de générer toutes les valeurs d'un coup, puis de les agencer comme tu le souhaites.
Bonne continuation
merci pour l'information et voici le code pour trier un tableau générer aléatoirement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 INTEGER N PARAMETER(N=12) real k(N) INTEGER i real Qmin, Qmax PARAMETER(Qmin=3.0, Qmax=5.2) INTEGER*4 time(3) REAL rand,c call itime(time) i = rand(time(1) + time(2) + time(3)) k(1)=Qmin k(12)=Qmax DO i = 2, N-1 k(i) = (rand(0) * (Qmax - Qmin) + Qmin) ENDDO do j=1,100 ! c pour s'assurer que le tableau est bien trié do i=2,N-1 if (k(i).LT.k(i-1)) then c=k(i-1) k(i-1)=k(i) k(i)=c end if end do end do do i=1,N write(*,*)k(i) end do END
en faite c'est ce que je veux trie, un ensemble des valeurs.
voici le code
explication: je veux avoir une allure croissante entre 0 et 12h et décroissant entre 12h et 24h puis a chaque période je veux générer des valeurs différentes des autre et en même temps avoir la même allure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 CALL HYDROGRAMME(10.2,45.2,240) END SUBROUTINE HYDROGRAMME(Qmin,Qmax,T) INTEGER N,NI,NF,T real k(T) real Qmin, Qmax INTEGER*4 time(3) REAL rand,c call itime(time) N=12 NI=1 NF=24 M=T/24 k(N)=Qmax k(NI)=Qmin i = rand(time(1) + time(2) + time(3)) DO i = NI+1, N-1 k(i) = (rand(0) * (Qmax - Qmin) + Qmin) ENDDO DO i = N+1,NF k(i) = (rand(0) * (Qmax - Qmin) + Qmin) ENDDO do j=1,100 ! c pour s'assurer que le tableau est bien trié do i=NI+1,N-1 if (k(i).LT.k(i-1)) then c=k(i-1) k(i-1)=k(i) k(i)=c end if end do do i=N+1,NF if (k(i).GT.k(i-1)) then c=k(i-1) k(i-1)=k(i) k(i)=c end if end do END DO DO L=1,M-1 N=N+24 NI=NI+24 NF=NF+24 k(N)=Qmax DO i = NI, N-1 k(i) = (rand(0) * (Qmax - Qmin) + Qmin) ENDDO DO i = N+1,NF k(i) = (rand(0) * (Qmax - Qmin) + Qmin) ENDDO do JJ=1,100 ! c pour s'assurer que le tableau est bien trié do i=NI,N-1 if (k(i).LT.k(i-1)) then c=k(i-1) k(i-1)=k(i) k(i)=c end if end do do i=N+1,NF if (k(i).GT.k(i-1)) then c=k(i-1) k(i-1)=k(i) k(i)=c end if end do END DO end do do i=1,T write(*,*)i,k(i) end do END
T:temps max ici =240
M=T/24 :période
Partager