乱数を使って図形の面積を求めてみよう
ーVisual Basic入門ー  ネットワーク情報学部 綿貫理明

モンテカルロ法
フォン・ノイマン等によって提案された、乱数を使用して問題を解く手法の総称である。乱数とは数が不規則(ランダム)で等確率に配置されたものである。コインの裏表、サイコロの目の出方はランダムな事象である。ノイマンは、現在広く使われているノイマン型コンピュータの父でもある。コンピュータでモンテカルロ法を実行するには、計算によって高速に多数の擬乱数を発生させる。ランダムな事象を利用して円周率を求める一例として、“ビュフォンの針”という方法がある。

モンテカルロ:モナコ公国の北東部の観光都市。公営賭博場で有名。毎年自動車ラリーが行われる。
賭博のルーレットやサイコロは一種の乱数発生装置である。

ゼミ生のレポート:

Visual Basicプログラム:

Private Sub Command1_Click()
Print "Hello"      'Helloとプリントしなさい
End Sub

Private Sub Command2_Click()
Cls            '画面をクリアしなさい 
For i = 1 To 10     'Nextまでを10回繰り返しなさい 
x = Rnd         '変数xに(一様)乱数を代入しなさい 
Print "x=", x      'xの値をプリントしなさい 
Next i

End Sub

Private Sub Command3_Click()
Cls
Scale (-1, 2)-(2, -1)
Line (-1, 0)-(2, 0)
Line (0, -1)-(0, 2)
Randomize             
'初期値をランダム化させなさい
For i = 1 To 10000
x = Rnd
y = Rnd
PSet (x, y), RGB(96, 185, 30) '座標(x,y)の場所にRGB色の点を描きなさい
Next i

End Sub

Private Sub Command4_Click()
Cls
Scale (-1, 2)-(2, -1)
Line (-1, 0)-(2, 0)        '2点間に線を引きなさい
Line (0, -1)-(0, 2)
m = 0
n = 0
Randomize
For i = 1 To 10000
n = n + 1                           '発生させたランダムな点の総数を数えなさい
x = Rnd
y = Rnd
If (x * x + y * y <= 1) Then  '点が半径1の円の中に入っていたらmを1だけ加算しなさい
m = m + 1
PSet (x, y), RGB(238, 96, 182)
End If
Next i
MsgBox "S=(π=)" & 4# * m / n '半径1の円の面積を求めなさい=円周率を求めなさい

End Sub

Copyright©2003 綿貫研究室