Loi symétrique en C++
Bonjour
Imaginons que j'ai une loi $\mathbb{P}(x)$, dépendant d'un paramètre $x \neq 0$, symétrique au sens où $\mathbb{P}(x) = \mathbb{P}(-x)$.
Pour $x > 0$, j'arrive à simuler $\mathbb{P}(x)$ par une méthode aléatoire (rejet en l'occurrence).
Maintenant, puisque la loi est symétrique, j'ai donc en théorie réussi mon coup et je peux écrire mon programme
Je pense que c'est lié au fait que le générateur ne devrait pas être utilisé avec la même graine mais je ne suis pas sûr (et je ne sais pas comment changer une graine); je serais reconnaissant à quiconque pouvant m'aider.
Imaginons que j'ai une loi $\mathbb{P}(x)$, dépendant d'un paramètre $x \neq 0$, symétrique au sens où $\mathbb{P}(x) = \mathbb{P}(-x)$.
Pour $x > 0$, j'arrive à simuler $\mathbb{P}(x)$ par une méthode aléatoire (rejet en l'occurrence).
Maintenant, puisque la loi est symétrique, j'ai donc en théorie réussi mon coup et je peux écrire mon programme
double maLoi(double x, mt19937_64 & gen){ if (x > 0){ return rejet(x, gen); } else{ return maLoi(-x, gen); } }Seulement en pratique cela ne fonctionne pas : si je fais deux simulations de Monte-Carlo pour obtenir l'espérance de $\mathbb{P}(3)$ et $\mathbb{P}(-3)$, je n'obtiens pas la même chose.
Je pense que c'est lié au fait que le générateur ne devrait pas être utilisé avec la même graine mais je ne suis pas sûr (et je ne sais pas comment changer une graine); je serais reconnaissant à quiconque pouvant m'aider.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est un peu bizarre, puisque tu utilises les deux fois la routine rejet(3, gen). Donc tu dois aussi obtenir des résultats différents si tu fais le test avec 3 et 3.
Cordialement.
Je ne suis pas sûr de comprendre ce que tu dis.
Je suis d'accord que la méthode doit renvoyer des nombres différents à chaque appel (puisque l'on utilise des nombres aléatoires) mais le souci est que quand je fais et que je regarde ensuite sum1/N et sum2/N, je n'obtiens pas la même chose alors que ces deux espérances devraient être égales puisque la loi est symétrique.
A priori, avec un bon générateur, on doit avoir deux résultats proches, pas nécessairement égaux, puisque c'est une simulation. Et on devrait avoir le même type de résultats pour le même programme où x=-3 est remplacé par x=3.
Cordialement.