Standing on the Shoulder of Linus

Home / 2009 / 3月 / 28 / モンテカルロ法で円周率測定

モンテカルロ法で円周率測定

モンテカルロ法とは、繰り返し試行を行うことで、確率の大数の法則を用いて、数値測定する方法です。名前は、カジノで有名なモナコの都市名に由来しています。フォンノイマンが考案したと言われています。コマ大数学科でも取り上げられたことがあります。

例として、モンテカルロ法を用いて、円周率を測定してみましょう。下図の縞模様の領域が円(の1/4) 内部で、黒い部分は円の外側です。

circle

ランダムに座標を選んだとき、「円の内部にある確率=(円の内側の面積/全体の面積)=¼π」となるはずです。試しにスクリプトを作成してみました。

スクリプトでは、x座標y座標ともに、0から1000の乱数とし、x²+y² が1000²=1000000を越えるかどうかを判定します。(厳密には 0.5 1.5 … 999.5 のほうが望ましいですが、ここでは簡略化しています。) 試行回数を増やすと、約0.785になるはずです。

<?php
class player {/*{{{*/
	var $test = 0;
	var $x = 0;
	var $y = 0;
	var $distance = 0;
	var $true = 0;
	function player($num) { /*{{{*/
		$this->test += $num;
		for ($j=0;$jshuffle();
		} /*}}}*/
	} /*}}}*/

	function shuffle() { /*{{{*/
		$this->x = mt_rand(0,1000);
		$this->y = mt_rand(0,1000);
		$this->distance = $this->x * $this->x + $this->y * $this->y ;
		echo "x=";
		echo $this->x;
		echo ", y=";
		echo $this->y;
		echo ", distance=";
		echo $this->distance;
		if ( 1000*1000 > $this->distance ) {
			$this->true++;
			echo ", True";
		}
		echo "<br>n";
	} /*}}}*/
	function output() {
		echo $this->true;
		echo "/";
		echo $this->test;
	}
}/*}}}*/

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php
if (2 <= $_POST['test'] && 100000 >= $_POST['test'] ) {
	$obj = new player($_POST['test']);
	print "<hr>";
	$obj->output();
}
?>
<form action="pi.php" method="post">
テスト回数:(2-100000)
<input type="text" size=5 name="test" value="">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

楽天で検索
【楽天ブックスならいつでも送料無料】モンテカルロ法によるリアル・オプション分析 [ 大野薫 ]
7776円
事業計画の戦略的評価 大野薫 金融財政事情研究会 きんざい発行年月:2013年01月 ページ数:453p サイズ:単行本 ISBN:9784322121803
楽天ブックス
Supported by 楽天ウェブサービス

関連

← WordCamp 2009 ショートコードのメリット →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.