読者です 読者をやめる 読者になる 読者になる

VBAを使ってロト6のデータを形にする その3

はじめに

前回、

vba-belle-equipe.hatenablog.com


「ボーナス数字」と「連続ハズレ回数」を出すところまでいきました。
今回は連続でハズレた回数の履歴をつけていきたいと思います。

「結果」シート

f:id:vba-belle-equipe:20161208145251p:plain

変わりません。

「メイン」シート

f:id:vba-belle-equipe:20161219111421p:plain

連続ハズレ回数を記録する列が増えています。
※回数はどこまでも伸びる可能性がありますが、とりあえず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次元配列を使っています。

f:id:vba-belle-equipe:20161219104804p:plain

こういう表のイメージです。

「1 To 43」の部分で各数字ごとに行を作り、「0 To 40」で回数ごとの列を作っているという感じでしょうか。

結果

f:id:vba-belle-equipe:20161219105613p:plain

こんなん出ました~
(ごちゃごちゃしすぎるので、下のほうは割愛しています)


考察

連続40回ハズレというのはどれくらいの確率でしょうか。

1回ハズレる確率は、37/43で、およそ86%です。

それが40回連続ともなると、0.25%くらい。


しかし、40回以上連続のハズレは、ロト6の歴史で20回以上出現しているようです。
そこまで珍しいことではないみたいですね。



では、連続で外れているという情報を次に買う際の根拠としてよいか。

難しいところです。

絶対に雨が降る雨ごい

と同じように、買い続ければいずれはその数字が当たると思いますが、

問題は

一緒に当たる数字が何なのかわからん

ということですよね。


方法をご存じの方がいたら是非ともご連絡ください。


参考

ロト6長期的分析データ

結果の答え合わせに、参考にさせていただきました。

VBAを使ってロト6のデータを形にする その2

はじめに

前回、

vba-belle-equipe.hatenablog.com

本数字の当り回数を43の数字それぞれでカウントし、表示するところまでいきました。
今回は「ボーナス数字」と「連続ハズレ回数」を出してみます。

コード

こんな感じになりました。

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 num 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) = 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)
    Cells(i, 5) = nohit(i - 5)
  Next
  
End Sub

ボーナス数字

単純に

Dim bonus(1 To 43) As Long

と新しい配列を作って、カウントしています。

連続ハズレ回数

こちらは

Dim nohit(1 To 43) As Long

という配列を作り

  • For文の「i」が増える(= 「回」を重ねる)ごとに連続ハズレ回数が1回ずつ増えていく
  • ただし、当たったらその数字のカウントはゼロになる

というふうにしています。

結果

f:id:vba-belle-equipe:20161211174629p:plain

こんな感じです。

27回連続とか、なかなかハズレとんなという感じですが、どうなんでしょうか。
その辺の統計を次回はとってみたいと思います。

VBAを使ってロト6のデータを形にする その1

はじめに

先日、新人個人事業主として、税務署主催の青色申告説明会というものに行ってきました。

大変暇な思索にふける時間に富んだ内容でしたので、以前知人から相談された内容についてずっと考えてました。


それは

VBAを使ってロト6を当てられないのか

ムリでしょ

というもの。



ただ、Excel VBAは統計を取るには大変便利です。

どういう情報をどうやって取るかなーと考えるのは結構面白いです。


どんなデータをとるか

とりあえず統計的に意味がありそうな

  • それぞれの数字の当選回数
  • どれだけ連続で外れているか

あたりをやってみましょう。

「結果」シート

6個の当り数字、ボーナス数字を一覧にしたシートです。

f:id:vba-belle-equipe:20161208145251p:plain

「メイン」シート

対象の回範囲を設定して、それぞれの数字の当り回数を表示させます。

f:id:vba-belle-equipe:20161208145242p:plain

書いてみる

コード

実際に書いて実行してみます。

Sub 更新()
  Dim startnum As Long, endnum As Long
  Dim i As Long, j As Long
  Dim hit(1 To 43) As Long
  Dim num 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 = 2 To 7
        num = .Cells(i, j)
        hit(num) = hit(num) + 1
      Next j
    Next i

  End With

  With Sheets("メイン")
    For i = 6 To 48
      .Cells(i, 3) = hit(i - 5)
    Next
  End With
End Sub

ポイント

43個の数字の結果をそれぞれカウントしたいので、配列を

Dim hit(1 To 43) As Long

で作っています。

これにより、1の結果は「hit(1)」、43の結果は「hit(43)」でOK!

結果

f:id:vba-belle-equipe:20161208150231p:plain

こんな感じで、1から43までの当り回数をカウントできました。

※ウインドウ枠を固定しているので、一部が表示されています

焼肉屋で網替えてもらおうと思ったらなんか変な感じになった

f:id:vba-belle-equipe:20161104210500j:plain


まず、この話はVBAとまったく関係ありません。

べつにまあいいかなと思えばいいかという感じなんだけど、なんとなく収まらないので最近ご無沙汰なブログに書いてみる。



ある焼き肉屋にて――


筆者「すいません。網、替えてもらえますか」

愛想のいい女性店員「はい、かしこまりました~」


少しして

愛想のよくない男性店員「網、替えるんでいいですか?」

筆者「あ、お願いします」

員「…………」(網を替えてくれる)

員「あんまり、変わらないと思いますけどね!!」

捨て台詞を残して去る店員。

ちょっと意味がわからなかったが、吟味した結果、「そんなに汚れてねえのに網替えろとか言ってんじゃねえよボケ」と言われたと理解する。

筆者「…………」(ショック)


こういう場合のテンプレとして、他の席の「網替えて」の網をチェックして、自分たちより綺麗なのに何も言われないということを確認。



・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。

・・・・・・・・・・・・・・・・・・・・・・・・。



まあ、あれですね。


残念、ですね。


肉はおいしかったです。


ちなみにその後何も頼む気がしなかったので、2枚目の網がそんなに汚れないで出てきてしまったのは確かです。

その点は申し訳ない。

「Office 365 サービス の利用開始手続き完了のお知らせ」 というメール

雑文

f:id:vba-belle-equipe:20160926191417j:plain

ある日

2016年×月××日に [Office 365 サービス] のご利用開始手続きが完了しました。サービスの詳しい内容については、こちらをご覧ください。

これは、1 年契約の Office Premium PIPC 向け Office 365 サービス サブスクリプションです。有効期限が切れる前に、サブスクリプションの更新を促すメールがお客様に送信されます。www.Office.com/myaccount にサインインすると、アカウントを管理したり、サブスクリプションに含まれている OneDrive や Skype などのサービスにアクセスすることができます。

http://www.office.com/myaccount/ にアクセスして Office をインストールします。

ありがとうございます。

Microsoft Office チーム

注意: このメールは配信専用のアドレスからお送りしています。このメールにご返信いただいても、お問い合わせにお答えすることはできませんので、あらかじめご了承ください。

アカウントの課金情報の詳細 (該当する場合) については、http://commerce.microsoft.com/ にアクセスしてください。プライバシーに関して不明な点がある場合は、http://privacy.microsoft.com/ にアクセスしてください。


というメールが来ていました。



イタズラかなと思いながら、リンクは押さずにMiceosoftのアカウントを見たら、一応本物っぽい。
(2017年△月△日にサブスクリプションの有効期限が切れますと書いてあった)

新しいPCのOfficeを有効化した時に何かしたんだったっけかな。

半年?くらい経ってるから覚えてないですね。
(昨日でも覚えていないかもしれないが)


それにしても、いきなり「ご利用開始手続きが完了しました」って、ギョッとしますな。