Accueil > > > DÉTERMINER PI PAR LE BIAIS DE LA MÉTHODE DE MONTE CARLO ( LANGAGE C )
DÉTERMINER PI PAR LE BIAIS DE LA MÉTHODE DE MONTE CARLO ( LANGAGE C )
Information sur la source
Description
Les explications concernant le code figure en commentaire dans le programme
Source
- /********************************************************************************/
- /*
- /* Ce programme permet à l'aide de la méthode de Monte Carlo
- /* de déterminer de manière approximative pi
- /* Pour cela on trace un carré dans lequel figure un arc de cercle
- /* Puis l'on génère une série de points de coordonnées (x,y) dans ce carré
- /* Et à chaque fois le programme détermine si les points sont dans ou hors
- /* de l'arc de cercle à l'aide du calcul se réferrant à cette méthode puis enfin
- /* on fait le rapport du nombre de points dans le cercle (multiplié par 4)
- /* avec le nombre de points total ce qui au final permet la détermination
- /* approximative de pi.
- /*
- /********************************************************************************/
-
-
- /* Importation de bibliothèques */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
-
- /* Cette fonction va permettre de générer des nombres aléatoires */
-
- int my_rand (void)
- {
- static int first = 0;
-
- if (first == 0)
- {
- srand (time (NULL));
- first = 1;
- }
- return (rand ());
- }
-
- /* Programme principal */
-
- int main()
- {
- printf(" ****************************\n");
- printf(" * *\n");
- printf(" * Programme de Monte Carlo *\n");
- printf(" * Cree par Shakan972 *\n");
- printf(" * Le 08/02/07 *\n");
- printf(" * *\n");
- printf(" ****************************\n\n");
-
- float x, y, pi;
- float n, i, pts_dans_cercle, pts_tot, t;
- i=0;
- pts_dans_cercle=0;
- pts_tot=0;
- printf("Veuillez saisir le nombre d'iterations a realiser : ");
- scanf("%f",&n);
- printf("\n");
- while (i<=n)
- {
- my_rand();
- x=rand()/(RAND_MAX+1.0); /* Génération de points de coordonnées aléatoires compris dans l'intervalle [0,1] */
- x=x*x;
- my_rand();
- y=rand()/(RAND_MAX+1.0);
- y=y*y;
- if (x+y<1)
- {
- pts_dans_cercle=pts_dans_cercle+1;
- }
- pts_tot=pts_tot+1;
- i=i+1;
- printf("Estimation de pi = %4f\n",(4*pts_dans_cercle)/(pts_tot));
- }
- printf("\n");
- printf("Estimation de pi termine !!\n\n");
- system("PAUSE");
- return 0;
- }
/********************************************************************************/
/*
/* Ce programme permet à l'aide de la méthode de Monte Carlo
/* de déterminer de manière approximative pi
/* Pour cela on trace un carré dans lequel figure un arc de cercle
/* Puis l'on génère une série de points de coordonnées (x,y) dans ce carré
/* Et à chaque fois le programme détermine si les points sont dans ou hors
/* de l'arc de cercle à l'aide du calcul se réferrant à cette méthode puis enfin
/* on fait le rapport du nombre de points dans le cercle (multiplié par 4)
/* avec le nombre de points total ce qui au final permet la détermination
/* approximative de pi.
/*
/********************************************************************************/
/* Importation de bibliothèques */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* Cette fonction va permettre de générer des nombres aléatoires */
int my_rand (void)
{
static int first = 0;
if (first == 0)
{
srand (time (NULL));
first = 1;
}
return (rand ());
}
/* Programme principal */
int main()
{
printf(" ****************************\n");
printf(" * *\n");
printf(" * Programme de Monte Carlo *\n");
printf(" * Cree par Shakan972 *\n");
printf(" * Le 08/02/07 *\n");
printf(" * *\n");
printf(" ****************************\n\n");
float x, y, pi;
float n, i, pts_dans_cercle, pts_tot, t;
i=0;
pts_dans_cercle=0;
pts_tot=0;
printf("Veuillez saisir le nombre d'iterations a realiser : ");
scanf("%f",&n);
printf("\n");
while (i<=n)
{
my_rand();
x=rand()/(RAND_MAX+1.0); /* Génération de points de coordonnées aléatoires compris dans l'intervalle [0,1] */
x=x*x;
my_rand();
y=rand()/(RAND_MAX+1.0);
y=y*y;
if (x+y<1)
{
pts_dans_cercle=pts_dans_cercle+1;
}
pts_tot=pts_tot+1;
i=i+1;
printf("Estimation de pi = %4f\n",(4*pts_dans_cercle)/(pts_tot));
}
printf("\n");
printf("Estimation de pi termine !!\n\n");
system("PAUSE");
return 0;
}
Conclusion
Ce programme qui traite de la méthode de Monte Carlo existe également dans une version python mais vu que ce genre de programme n'avait pas été traité je me suis permis d'opérer la conversion afin de faire profiter les programmeurs utilisant le langage C.
Etant donné que c'est l'un de mes premiers programmes en C pour débutant que je présente je compte sur votre clémence ^^
Historique
- 12 février 2007 14:43:47 :
- Variable inutile
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
nombre aléatoire [ par obasileus ]
salut,je ne trouve pas la commande qui permet de faire générer à l'ordinateur un nombre aléatoireplease help me !!!! :-)merci
toujours nombre aléatoire [ par obasileus ]
Salut à tous, j'ai demander il y a quelque jours comment générer un nb aléatoire. Je remerci d'ailleur Jo de m'avoir répondu. Cependant je bosse sous
comment générer un chiffre de façon aléatoire [ par magicoz ]
Bonjour, J'aurais souhaité savoir comment générer en C un chiffre de façon aléatoire compris entre 1 et 6 par exemple. Si possible, me fournir un exe
Pseudo code avec problème :( (urgent) [ par cardi ]
Mon poste ressemble un peu à celui de Goschan... Voici mon pseudo code pour faire un déplacement positif dans un vecteur d'entiers avec les pointeurs:
Aléatoire [ par lainlain ]
Salut tout le monde!Alors, voilà mon problème:Je cherche à faire un programme qui génère des nombres aléatoires dans une certaine plage donnée, mais j
Nombre aléatoire de type Double [ par BRAUKRIS ]
Impossible de génère un nombre aléatoire à virgule.J?ai utilisé la fonction rand mais elle me renvoie toujours un nombre entier.Comment doit-je faire
tirage aléatoire selon une loi gaussienne [ par marmotte33 ]
Je cherche à faire un petit programme en c++ permettant d'obtenir une variable aléatoire suivant une loi Gaussienne, en paramétrant la valeur moyenne
C ANSI allocation dynamique de tableau [ par pedu ]
Ce petit pro beug en sortie, pourquoi et que faire ?#include <stdio.h>#include <stdlib.h>int (*pi)[1][1]; /* pointeur sur un tableau d'e
Générer un nombre aléatoire [ par lan32 ]
Est ce que vous savez quelle est la fonction qui permet de générer un nombre aléatoire par exemple compris entre 0 et 100.Et aussi comment faire pour
Symbole de PI [ par boun85 ]
J'aimerai savoir comment faire pour afficher le symbole de PI à l'écran?Merci d'avance
|
Derniers Blogs
[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE par tja
C'est le dernier principe des principes du Design Orienté Objet (The Principles of Object Oriented Design) fondés par Robert C. Martin plus connu sous le pseudonyme d'Uncle Bob.
l'image empruntée de LosTechies.
Je ne traite pas les principes dans...
Cliquez pour lire la suite de l'article par tja TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
CARTE GOOGLECARTE GOOGLE par ja92
Cliquez pour lire la suite par ja92 RE : WIN APIRE : WIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|