Excel VBAを使った模擬ロト6

今回はExcelのVBAを使用して、自分が選んだ数字がどのくらい当たるのかを調べてみたいと思います。

ロト6の当選は以下の通りです。

1等 6個一致
2等 5個一致+ボーナス数字と一致
3等 5個一致
4等 4個一致
5等 3個一致

当選金額と確率が知りたい方は公式サイトで。

Excelのランダム関数を使用しますが、今回使用したプログラムが完全にランダムかは微妙なところです・・・

まず、6つの数字を入力します。(重複はなし)
試行回数を入力し、マクロの実行ボタンを押します。パソコンのスペックにもよりますが、回数は10万回くらいが目安です。一回一回表示させるようにすると、実行速度がかなり遅くなってしまうので、まとめて表示させるようにしています。

試しに100,000回実行した結果です。そんなに問題はなさそうです。

一応下にVBAで書いたコードを載せておきます。重大なミスなどがありましたら申し訳ありません。
一応わかりやすいように書いたつもりですが・・・


Sub 正方形長方形1_Click()
    Dim Chz(5)
    Chz(0) = Cells(4, 2)
    Chz(1) = Cells(4, 3)
    Chz(2) = Cells(4, 4)
    Chz(3) = Cells(4, 5)
    Chz(4) = Cells(4, 6)
    Chz(5) = Cells(4, 7)
            
    Dim a(6)    '結果
    Dim Bonus   'ボーナス数字判定
    Dim seikai(7)   '正解数
    Randomize
    While m < Cells(2, 9)  '回数:ここではセルI2
        Bonus = 0   'リセット
        goukei = 0
    '乱数作成
        For i = 0 To 6
            a(i) = Int(Rnd() * 43) + 1
            For j = 0 To i - 1
                If a(i) = a(j) Then
                    i = i - 1
                End If
            Next
        Next
    '比較
        For k = 0 To 5
            If a(6) = Chz(k) Then
                Bonus = 1
            End If
            
            For n = 0 To 5
                If Chz(k) = a(n) Then
                    goukei = goukei + 1
                End If
            Next
            
        Next
        
        If Bonus = 1 And goukei = 5 Then
            seikai(7) = seikai(7) + 1
            
            Else: seikai(goukei) = seikai(goukei) + 1
        End If
        
        m = m + 1
        
    Wend
    '表示
    For l = 0 To 7
        Cells(4, 9 + l) = seikai(l)
    Next

End Sub

コメントを残す

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

CAPTCHA