VBAを使ってロト6のデータを形にする その3
はじめに
前回、
vba-belle-equipe.hatenablog.com
「ボーナス数字」と「連続ハズレ回数」を出すところまでいきました。
今回は連続でハズレた回数の履歴をつけていきたいと思います。
「結果」シート
変わりません。
「メイン」シート
連続ハズレ回数を記録する列が増えています。
※回数はどこまでも伸びる可能性がありますが、とりあえず40回以上は一くくりにしてみました。
コード
こんな感じになりました。
Sub 更新() Dim startnum As Long, endnum As Long Dim i As Long, j As Long Dim hit(1 To 43) As Long Dim bonus(1 To 43) As Long Dim nohit(1 To 43) As Long Dim renzoku(1 To 43, 0 To 40) As Long Dim num As Long, num2 As Long With Sheets("メイン") startnum = .Range("C1") endnum = .Range("C2") .Range("C3") = endnum - startnum + 1 End With With Sheets("結果") For i = startnum + 1 To endnum + 1 '連続ハズレ For j = 1 To 43 nohit(j) = nohit(j) + 1 Next '本数字(当たり処理) For j = 2 To 7 num = .Cells(i, j) hit(num) = hit(num) + 1 '連続ハズレ調整 nohit(num) = nohit(num) - 1 If nohit(num) > 40 Then nohit(num) = 40 End If renzoku(num, nohit(num)) = renzoku(num, nohit(num)) + 1 nohit(num) = 0 'ハズレリセット Next j 'ボーナス数字 num = .Cells(i, 8) bonus(num) = bonus(num) + 1 Next i End With For i = 6 To 48 Cells(i, 3) = hit(i - 5) '当選回数 Cells(i, 4) = bonus(i - 5) 'BONUS Cells(i, 5) = nohit(i - 5) '連続ハズレ '連続ハズレ過去回数 For j = 7 To 46 Cells(i, j) = renzoku(i - 5, j - 7) Next j Next i End Sub
連続ハズレ回数の履歴
連続ハズレ回数(現在進行形)を
Dim nohit(1 To 43) As Long
という配列に入れるのは前回と同じです。
(当たったら、0にリセットされる)
加えて今回は、各数字と連続ハズレ回数の情報を持たせるために
Dim renzoku(1 To 43, 0 To 40) As Long
という2次元配列を使っています。
こういう表のイメージです。
「1 To 43」の部分で各数字ごとに行を作り、「0 To 40」で回数ごとの列を作っているという感じでしょうか。
結果
こんなん出ました~
(ごちゃごちゃしすぎるので、下のほうは割愛しています)
考察
連続40回ハズレというのはどれくらいの確率でしょうか。
1回ハズレる確率は、37/43で、およそ86%です。
それが40回連続ともなると、0.25%くらい。
しかし、40回以上連続のハズレは、ロト6の歴史で20回以上出現しているようです。
そこまで珍しいことではないみたいですね。
では、連続で外れているという情報を次に買う際の根拠としてよいか。
難しいところです。
絶対に雨が降る雨ごい
と同じように、買い続ければいずれはその数字が当たると思いますが、
問題は
一緒に当たる数字が何なのかわからん
ということですよね。
方法をご存じの方がいたら是非ともご連絡ください。