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
| Sub subMonExo()
Const NbMarches As Integer = 100
Const NbSauts As Integer = 30
Const ValSaut As Single = 1
Dim sglMoy As Single
Dim sglET As Single
'Créer la série de résultats en colonne D de la feuille 1
Call subCreeSeriePuce(NbMarches, NbSauts, ValSaut)
'On suppose que la série est répartie suivant une loi normale sinon, il faudrait tester
'calcul de sla moyenne et écrat type de l'échantillon
Call subCalculMoyEtET(NbMarches, sglMoy, sglET)
'afficher les résultats
With ThisWorkbook.Worksheets(1)
.Range("A1") = "Nb Marches"
.Range("B1") = NbMarches
.Range("A2") = "Nb sauts"
.Range("B2") = NbSauts
.Range("A3") = "Hypothèse"
.Range("B3") = "répartition normale centrée"
.Range("A4") = "Moy échantillon"
.Range("B4") = sglMoy
.Range("A5") = "estimation ET"
.Range("B5") = sglET
End With
End Sub
Function fctPuceMarche(ByVal NbSauts As Integer, ByVal ValSaut As Single) As Single
Dim i As Integer, s As Single
fctPuceMarche = 0
For i = 1 To NbSauts
s = 2 * Rnd - 1
fctPuceMarche = fctPuceMarche + Sgn(s) * ValSaut
Next i
End Function
Sub subCreeSeriePuce(ByVal NbMarches As Integer, ByVal NbSauts As Integer, ByVal ValSaut As Single)
Dim i As Integer
Dim SglTabSerie(1 To 100, 1 To 1) As Single
For i = 1 To NbMarches
SglTabSerie(i, 1) = fctPuceMarche(NbSauts, ValSaut)
Next i
ThisWorkbook.Worksheets(1).Range("D1:D100").Value = SglTabSerie
Erase SglTabSerie
End Sub
Sub subCalculMoyEtET(ByVal NbMarches As Integer, ByRef sglMoy As Single, ByRef sglET As Single)
'Calcul de la moyenne de l'échantillon
'calcul de l'écart type ( on suppose alors que la répartition est normale et que la valeur moyenne théorique est = 0, pour des raisons de symétrie)
Dim vTab As Variant
Dim i As Integer
vTab = ThisWorkbook.Worksheets(1).Range("D1:D100").Value
For i = 1 To NbMarches
sglMoy = sglMoy + vTab(i, 1)
sglET = sglET + (vTab(i, 1) - 0) ^ 2
Next i
sglMoy = sglMoy / NbMarches
sglET = (sglET / NbMarches) ^ 0.5
vTab = Null
End Sub |