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のグレーのエリアに 一様にランダムな点を打つことに相当する.
図7.3
図7.3の正方形内にランダムに発生する $x, $y の乱数の組をループを使って 10 個生成して表示するプログラムを作成せよ. 表示形式は自由でよい. 何度か実行して確認せよ.
図7.4
図7.3の正方形内にランダムに発生する $x, $y の乱数の組を 100 個生成し,そのうち図7.4のグレーのエリアに 入ったものの個数を表示するプログラムを作成せよ.
ように変更する. はじめに $total という変数を作ってループする回数をセットする. $total 回 $x, $y の乱数の組を生成し,そのうち図7.4のグレーのエリアに 入った個数をカウントする.試行回数を分母とし,ループに入った個数を分子とした比率を出力するプログラムを作成せよ.
練習7.3で出力されるのは一辺の長さが 1 の正方形と一辺の長さが0.5の正方形の面積比の 近似値を乱数を用いて計算したものである.試行回数が多いほど真の値である 0.25 に近づく.
練習 7.3 の試行回数を 10, 100, 1000, 10000, 10000 と 変化させたときの面積比の近似値を出力せよ.
次に図7.4の正方形に内接する円を考える.
図7.5
作成したプログラムのファイル名が pi.pl であれば,
jtXXXXXb% date ; ./pi.pl ; date
図7.6
のように date コマンドに挟んで実行することで 実行時間の目安を知ることができる.
課題「乱数を利用したアルゴリズム」 を読んで課題5を提出しなさい.