21日目 じゃんけん1000回させてみよう【30日間1日1本マクロ生活】




30日間1日1本マクロ生活、21日目です。

マクロを書く準備は、0日目に記事を書きました。

じゃんけん1000回

今日は乱数のお話です。

Excelの機能の一つに「乱数」があります。

「Rnd()」という関数で、0から1までの実数で適当に一つ作ってくれる関数です。

これを使って、自動的にじゃんけんを1000回させてみます。

さっそくコードを


Sub じゃんけん()
    n = 1000
    Range(Cells(2, 1), Cells(2, 3)).ClearContents
    
    For i = 1 To n
        a = Int(Rnd() * 3) + 1
        b = Int(Rnd() * 3) + 1
        k = a - b
        If k = 1 Or k = -2 Then Cells(2, 3) = Cells(2, 3) + 1
        If k = -1 Or k = 2 Then Cells(2, 1) = Cells(2, 1) + 1
        If k = 0 Then Cells(2, 2) = Cells(2, 2) + 1
    Next i
    
End Sub

解説します。

6行目の7行目に「Rnd()」があります。

「Int」はカッコ内の数の整数部分を取り出す関数です。

「Rnd()」で0から1までの間の実数を一つ適当に作ってくれます。

それを3倍しますので、0より大、3未満の実数になります。

その数に1を足しますので、1より大、4未満の実数になります。

その整数部分ですから、1,2,3のいずれかになります。

この「1」を「グー」、「2」を「チョキ」、「3」を「パー」と設定します。

例えば、a=1, b=2 のときはaがグー、bがチョキですから、aの勝ちです。

aが勝ちのときは、a-bの値が-1または2になります。

bが価値のときは、a-bの値が1または-2になります。

あいこはもちろんa=bですからa-b=0です。

勝った方のセルに、数字を1ずつ足していきます。

実行結果

マクロを記述するウィンドウの「Sub」と「End Sub」の間にカーソルを置いて、画面上方の再生ボタン的なアイコン(右向きの三角形)をクリックするか、[F5]キーを押して実行します。

じゃんけんで勝つ確率は \dfrac13、負ける確率も、あいこの確率も \dfrac13 です。

だからといって、じゃんけんを1000回やって全部333回になるかというと、そうではないのが実社会の面白いところ。

実際に、そのような結果になりました。何度も実行してみると面白いですね。

Excelは便利

悔しいですが、Excelは便利です。

Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。

マクロを書くようになると、Excelからは離れられないですね。

30日間、残り10日です。頑張ります。