1989年開業 情報工学部門 文部科学省登録番号 第22082号 公益社団法人日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム モンテカルロ法で円周率πを求める

●単位円と外接矩形(正方形)の面積の比を利用して、円周率πの近似値を求める
 プログラムです。
 ≫モンテカルロ法の説明資料
●画面には結果のみを表示します。
 ≫ソースファイルのダウンロード: PAI001.c

【問題】
●何回も試行して精度を確認してみよう。
●点の発生数 jmax を変化させて、精度への影響を確認してみよう。

/**************************************/
/*  モンテカルロ法で円周率πを求める  */
/*  単位円と外接矩形                  */
/**************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void  main( )
{
    int  j,jmax=10000000;                        // 点の発生数
    int  Ni;                                     // 単位円内の回数
    double x,y,max,pi;

    max=(double)RAND_MAX;                        // 乱数最大値
    srand(time(NULL));                           // 乱数の準備

    for( j=0,Ni=0; j<jmax; j++ )                 // 点を発生
      {
        x=(double)rand( )/max;                   // x=乱数(0〜1)
        y=(double)rand( )/max;                   // y=乱数(0〜1)
        if ( x*x+y*y<=1.0 ) Ni++;                // 点は単位円内
      }

    pi=(double)Ni/(double)jmax*4;                // π/4を4倍
    printf("\nπ≒%lf\n",pi);
}
   

©著作者からのお願い

●プログラムの著作者、著作権者は佐伯英子です。
●このページで公開するプログラムは、複製、改変、無償再配布できます。
●再配布に当たっては、必ず著作者名を明記し、ソースも公開してください。
●改変後に再配布される場合も、原著作者を明記していただき、ソースも公開してください。
●これらのプログラムを使って、有償サービスをしていただいてもかまいません。
●これらのプログラムは、改変されたものも含めて、無断で有償再配布しないでください。
●これらは、再再配布以降にも引き継がれます。

         【ご利用例】
●ブログやホームページ、印刷物に掲載していただいてもかまいません。(出典明記)
●学校の授業や実習、会社の研修、有料の講座などでお使いいただけます。(出典明記)
無断で販売しないでください。
----------------------------------------
●お問合せはどうぞこちらから
----------------------------------------
■著作権法全文(e-Govウェブサイト)■
法令全般



佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: yfb22332@nifty.com