C言語ケーススタディ 乱数で円周率を求める




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



乱数を使用して円周率を求めるプログラムを作成します(モンテカルロ法といったと思います)。
一辺が1の正方形に円の右上1/4を描きます。その上に適当な点を打っていき1/4円の内側の点か外側の点かを調べそれぞれの数をカウントしていきます。 円の内側かどうかはその座標のx*x + y*yが1以下かどうか判別することができます。 点の数の総数で円内に打たれた点の数を割り4倍すると円周率が求められます。 rand関数は0から32767までの数値を返すのでその値を32767.0で割ると0から1の座標が求められます。
#include <stdio.h>

main()
{
        double  x, y;

        int     i1, in;

        srand(time(NULL));
        in = 0;
        for(i1 = 0; i1 < 1000000; i1++){
                x = (double)rand() / 32767.0;
                y = (double)rand() / 32767.0;
                if(x * x + y * y <= 1.0)
                        in++;
                if(i1 > 0 && i1 % 10000 == 0)
                        printf("%d : %f\n", i1, (double)in / i1 * 4.0);
        }
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...