■ モンテカルロ法(Monte Carlo method)とは...
* 「乱数」を用いてシミュレーションを何度も繰り返すことにより、「近似解」を求める手法
■ 使用例
例1:円周率の計算
=> 正方形内に乱数を用いて多数の点を一様に打ち、円の中にある点の個数によって求め、
正方形に内接する円の面積を近似的に求める
サンプル
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
<!--
// 乱数x,yを発生させ、正方形内に点P(x,y)を打てば、
// 「1/4円内の点の数」と「正方形内の点の数」との比は、
// 「1/4円の面積」と「正方形の面積」との比の「近似値」となる
function calcPi(){
var n = document.sampleForm.targetValue.value;
var counter = 0;
// n回シミュレーションを行う
for (i = 0; i <= n; i++) {
// x, yに0~1の乱数
var x = Math.random();
var y = Math.random();
// ランダムに発生させた点が円内にあるか確認
if ((x * x) + (y * y) <= 1) {
// ランダムに発生させた点が円内にあった時の数を数え
counter++;
}
}
// (counter / n)は半径1の1/4円の面積のため、円周率はその4倍にする
var pi = (counter / n) * 4;
document.getElementById('result').innerHTML = '<p>' + pi + '</p>'
}
//-->
</script>
</head>
<body>
<form name="sampleForm">
試行回数(ランダムに打つ点の個数)を入力して下さい<br />
<input size="10" type="text" name="targetValue">
<input type="button" onClick="return calcPi();" value="Calc">
</form>
<p id="result">Result</p>
</body>
</html>