VBA講座14
Select Caseステートメントでコイン投げマクロを作ります

 VBA 数学マクロ入門講座の第14回目です。今回は コインを10回投げて、表 (head) と裏 (tail) の出た回数を表示するマクロ を作りながら、Select Caseステートメントと乱数の基本について学びます。
 

コイン投げマクロ

 Select Caseステートメントを使ってマクロを書いてみました。Ifステートメントを使ってもほぼ同じ内容になります。頭に「'」が付いた赤い文字は補足コメントなので、プログラムに影響しません。

 Sub コイン投げ()

 Randomize

 Dim r As Double
 Dim i As Integer
 Dim head As Integer, tail As Integer

 For i = 1 To 10

 '乱数を r に入れます
  r = Rnd

 '乱数 r について場合分けします
 Select Case r

 '乱数が 0.5 より小さい場合
  Case Is < 0.5
   head = head + 1

 'それ以外の場合
  Case Else
   tail = tail + 1

 End Select

 Next i

 Debug.Print "表は" & head & "回です"
 Debug.Print "裏は" & tail & "回です"

 End Sub

 マクロを実行すると、イミディエイトウィンドウに

「表は X 回です、裏が Y 回です」

と表示されます。X と Y の部分は実行するたびに値が変わりますが、必ず X + Y = 10 となっています。

Randomizeステートメント

 2行目にある Randomize という記述は、乱数テーブルを初期化するものです。詳しく解説すると長くなってしまうので、ここでは割愛します。「 Rnd 関数を使うときには必ず最初にこの一文を入れる」ということだけ覚えておいてください。どうしても詳しく知りたい方は 言葉の工房あとりえこばと でこばとちゃんの解説を読んでください。

Rnd関数

 Rnd関数は 0 から 1 の乱数を発生させます。

r = Rnd

として r に乱数を入れています。

Select Caseステートメント

 Select Case は条件分枝のためのステートメントです。

 Select Case [変数]

  Case Is [条件1]
   [処理1]

  Case Is [条件2]
   [処理2]

  Case Else
   [処理3]

 End Select

という形式で記述しますが、[条件] のところで変数を省略します。 Ifステートメントを2回使わなければならないようなときに、片方を Select Caseステートメントで記述することで、マクロを読みやすくするなどのメリットがあります。さて「コイン投げマクロ」では

 Select Case r

  Case Is < 0.5
   head = head + 1

  Case Else
   tail = tail + 1

 End Select

となっています。の最初のところで r を指定しているので、[条件] のところは「 < 0.5 」と書きます。「発生した乱数が 0.5 より小さい値」という条件は「確率 50%」と同値です。そのときに表 (head) の出る回数に 1 を加えます。

 ≫ モンテカルロシミュレーション
 ≫ 数学マクロ講座トップページ

スポンサーリンク
スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください