VBA monte Carlo

bonjour j'arrive pas trop à savoir comment répondre à cette question .

mon énoncé est le suivant : Soit trois variables aleatoires independantes X ∼ N(μ = 1,σ2 = 1), Y ∼ N(μ = 3,σ2 = 3), et Z ∼ N(μ = 4,σ2 = 4). Ecrivez des procedures VBA (sub) appelees Question2a, Question2b, et Question2c qui estiment les probabilities suivantes par la methode de Monte-Carlo. Imprimez les r ́esultats dans la fenetre immediate.

a) Pr(4X −Y > 1)
b) Pr(2X−Y ≤2Z−4)

c) Pr(2X ≤ Y, Z < 4)

merci d'avance pour votre aide .

bonjour

que signifie la notation σ2 ? (2 écarts type ?)

non c'est la variance sigma au carre

bonjour,

voici un algorithme possible.

tu définis une fonction qui génère un nombre aléatoire à laquelle tu donnes tes paramètres moyenne et variance.
tu initialises un compteur à 0

tu exécutes une boucle n fois ( choisir n assez grand)
dans la boucle tu génères des valeurs pour X, Y et/ou Z
               si la condition (1, 2 ou 3 selon la question) est vraie, tu incrémentes le compteur

quand la boucle est terminée, tu affiches le résultat trouvé à savoir compteur/n

comment s'il vous plait ?

merci

bonsoir,

une façon de faire pour 2A

Sub question2a()
    Dim ctr As Long, n As Long, m As Long, j As Long, i As Long
    Dim X As Double, Y As Double, Z As Double, sommemoyenne As Double

    sommemoyenne = 0
    n = 1000 ' nombre d'essais (cas) pour simulation
    m = 100
    For j = 1 To m
        ctr = 0 'compteur de cas favorable?
        For i = 1 To n
            X = aleatoireloinormale(1, 1)
            Y = aleatoireloinormale(3, 3)
            If 4 * X - Y > 1 Then ctr = ctr + 1 'si cas favorable on incrémente le compteur
        Next i
    sommemoyenne = sommemoyenne + ctr / n
    Next j
    MsgBox "P(4X-Y > 1 ) = " & sommemoyenne / m
    Debug.Print "P(4X-Y > 1 ) = " & sommemoyenne / m 'on affiche la probabilité du cas favorable qui est la moyenne des ratios cas favorables/essais
End Sub

j'ai essayé de faire la meme chose pour la question b mais j'arrive pas à faire le inférieur ou égale et je suis pas très sur

Sub question2b()
Dim ctr As Long, n As Long, i As Long, X As Double, Y As Double
ctr = 0
n = 25000
 For i = 1 To n
 X = aleatoireloinormale(1, 1)
 Y = aleatoireloinormale(3, 3)
 Z = aleatoireloinormale(4, 4)
 If 2 * X - Y - 2 * Z < -4 Then ctr = ctr - 4
 Next i
 Debug.Print "P(2*X-Y-2*Z<-4)=" & ctr / n
End Sub

bonjour,

plus petit ou égal à s'écrit <= en vba.

incrémenter (sans autre indication), signifie faire +1

de rien !

merci je vais essayer

j'ai essayer de modifier le code encore mais je suis pas sur si la fin du code est correcte , la partie après le then ; parceque à la différence de la question A le notre constante est négative . merci d'avance .

Sub question2b()
Dim ctr As Long, n As Long, i As Long, X As Double, Y As Double
ctr = 0
n = 25000
 For i = 1 To n
 X = aleatoireloinormale(1, 1)
 Y = aleatoireloinormale(3, 3)
 Z = aleatoireloinormale(4, 4)
 If 2 * X - Y - 2 * Z <= -4 Then ctr = ctr + (-4)
 Next i
 Debug.Print "P(2*X-Y-2*Z<=-4)=" & ctr / n
End Sub

Bonjour,

je t'invite à essayer de comprendre la finalité de la variable ctr. (pourquoi ça doit être +1 et non -4)

ok je vais essayer

Rechercher des sujets similaires à "vba monte carlo"