![]() |
Bienvenue invité ( Connexion | Inscription )
![]() |
![]()
Message
#1
|
|
![]() Groupe : Inscrit Messages : 76 Inscrit : 30-Sep-07 Lieu : Meudon, (Paris) Membre n° 1205 ![]() |
Bonjour,
je débute vraiment en programmation C++ donc je crée des petits programmes pour m'entraîner. Or j'essaye de calculer Pi a l'aide la méthode Monte Carlo (pour maîtriser les rand () ) et mon programme ne marche pas ... mais sans erreurs apparentes de compilation... CODE ##include <iostream> #include <stdlib.h> #include <time.h> #include <math.h> #include <iomanip> using namespace std ; int main () { cout << "Simulation de Pi\n" ; cout << "Entrez un nombre etier de simulations a effectuer.\n" ; int N ; cin >> N ; double X ; double Y ; double R ; int M ; int S ; srand ( time (0) ) ; while ( S < N ) { X = 2 * rand () - 1 ; Y = 2 * rand () - 1 ; R = sqrt ( X*X + Y*Y ) ; if ( R <= 1 ) { M++ ; S++ ; } else { S++ ; } } cout << "Approximation de Pi: \n" << 4 * ( M/N ) << setprecision (5) ; return 0; } EDIT 1 : Dans le debugger ça donne ca : CODE [Session started at 2007-11-20 18:25:20 +0100.] Simulation de Pi Entrez un nombre etier de simulations a effectuer. 10 Approximation de Pi: -6.4226e+08 The Debugger has exited with status 0. Qu'est ce qui ne va pas? Et que me conseillez vous pour apprendre a maîtriser le C++? ( Livres , sites ET idées de projets etc... ) Ce message a été modifié par Darknight670 - 20 Nov 2007, 18:44. |
|
|
![]() |
![]()
Message
#2
|
|
![]() Groupe : Membre Messages : 360 Inscrit : 22-Jun-04 Lieu : A coté de Lille le WE, à coté de Paris la semaine... Membre n° 101 Section(s) : JdS ![]() |
Je ne suis plus certain mais il me semblait que la fonction rand renvoyait des réels entre 0 et 1. En tout cas, dans mes programmes, je n'ai jamais défini de RAND_MAX.
Pour ce qui est du point 4, effectivement, les points juste l'extérieur du disque ne sont pas pris en compte avec R <1. Ceci dit, probabilistement, c'est un événement de mesure nulle (donc proba que ça arrive = 0, du moins dans la théorie) donc ça ne changera rien du tout au résultat. -------------------- |
|
|
![]() ![]() |
![]() |
Version bas débit | Nous sommes le : 6 Jul 2025 - 16:19 |