Random Number
乱数

乱数

rand 関数を引数なしで呼び出すと 0 以上 1 未満の乱数が得られる. 以下のプログラムを作成し,実行せよ.

#!/usr/bin/perl

my $x;

$x = rand;
print "$x¥n";
$x = rand;
print "$x¥n";
$x = rand;
print "$x¥n";

図7.1

$x = rand;
$y = rand;

図7.2

とすることで,$x,$y 座標がどちらも 0 以上 1 未満である xy 平面上の 座標がランダムに得られる.これは図7.3のグレーのエリアに 一様にランダムな点を打つことに相当する.

0-1 の2次元範囲

図7.3

練習 7.1

図7.3の正方形内にランダムに発生する $x, $y の乱数の組をループを使って 10 個生成して表示するプログラムを作成せよ. 表示形式は自由でよい. 何度か実行して確認せよ.

1/4のエリア

図7.4

練習 7.2

図7.3の正方形内にランダムに発生する $x, $y の乱数の組を 100 個生成し,そのうち図7.4のグレーのエリアに 入ったものの個数を表示するプログラムを作成せよ.

練習 7.3

ように変更する. はじめに $total という変数を作ってループする回数をセットする. $total 回 $x, $y の乱数の組を生成し,そのうち図7.4のグレーのエリアに 入った個数をカウントする.試行回数を分母とし,ループに入った個数を分子とした比率を出力するプログラムを作成せよ.

練習7.3で出力されるのは一辺の長さが 1 の正方形と一辺の長さが0.5の正方形の面積比の 近似値を乱数を用いて計算したものである.試行回数が多いほど真の値である 0.25 に近づく.

練習 7.4

練習 7.3 の試行回数を 10, 100, 1000, 10000, 10000 と 変化させたときの面積比の近似値を出力せよ.

次に図7.4の正方形に内接する円を考える.

円のエリア

図7.5

  1. 正方形領域内の一様乱数を多数発生させ, そのうち,円内に入った数を計測する.
  2. 発生した乱数の総数と,円内に入った個数の比 で,正方形と円の面積比が近似できる.
  3. 上で求めた比と正方形の面積が 1 であることから円の面積の近似値が得られる.
  4. 円の面積が π×0.25 であることよりπの近似値が得られる.

作成したプログラムのファイル名が pi.pl であれば,

jtXXXXXb% date ; ./pi.pl ; date

図7.6

のように date コマンドに挟んで実行することで 実行時間の目安を知ることができる.

課題 5

課題「乱数を利用したアルゴリズム」 を読んで課題5を提出しなさい.


Updated in October 27, 2015, index, Yamamoto Hiroshi