ロト6のデータで遊ぶ: 番号は連続があるように選ぶといいよ

はじめに

お金が欲しいので、ロト6を買おうと思いました。

ロト6では、1から43までの数字から、6つを選びます。

この数字の組み合わせがピッタリ一致していたら、1等です。

当選金は、的中者全員で山分けします。なので、的中者が少なければ、当選金は高くなります。

当選金額を増やすための調査

...たくさんお金が欲しいです。山分けしたくありません。

なので、数字をどのように選べば当選金が多くなるか...が知りたいです。

今回は、数字に連続があるかないかで当選金額が変わるか、をチェックしてみます。

例えば、数字の組み合わせが

\[1, 15, 22, 23, 37, 39\]

といったような、連続した数字があるような組み合わせは、選択されにくい気がします。

例えば、

\[1, 15, 22, 27, 37, 41\]

のように、全体にバラけさせたくなるのが、人間の性なのではないでしょうか。

実際のデータを用意して、確認してみましょう。

ロト6の過去974回分の結果データを利用して、

当選番号に連続する数字があるかないかで、当選者人数と当選金額が変わるかどうか、を調べます。

準備: パッケージの読み込み

library(dplyr)
library(data.table)
library(pipeR)

準備: ロト6に当たると、いくら貰えるか

まずは、当選金額の確認です。いくら貰えるのか、気になります。

今回扱うデータでは、first_hit列が1等当選者数、first列が当選金額を表しています。

ちなみに、当選者0人の時は、当選金額は0円です。

## 読み込み
dat = fread("dat.csv")

## 中身はこんな感じ
dat %>% head
##    num               result first_hit     first second_hit   second  third
## 1: 974 02 03 29 30 32 43 26         0         0          5 21359800 678000
## 2: 973 01 05 06 12 30 31 24         2  49737200         13  6886600 217400
## 3: 972 02 07 17 18 21 40 29         1 117796500         13  8155000 691400
## 4: 971 02 03 04 12 22 29 11         4  25715300         18  5143000 302600
## 5: 970 02 04 18 23 31 38 01         2  55926200          6 16777700 419400
## 6: 969 03 09 19 22 23 40 10         1 113134300         13  7832300 515500
##    fourth      over
## 1:  12700 118666833
## 2:   5300         0
## 3:  11100         0
## 4:   6100         0
## 5:   7200         0
## 6:   9200         0
## 平均当選額
firstPrize_mean = 
  dat %>% 
  select(first) %>% 
  filter(first > 0) %>% 
  unlist %>% mean

### 当選額の平均
firstPrize_mean
## [1] 146053313

1億4600万円ですか。興奮しますね!

準備: 当選番号の分布

次に、当選番号の頻度分布をチェックします。

出やすい数字があったら嬉しいです。

result = fread("result_num.csv")

library(lattice)
result %>% unlist %>% 
  as.factor %>% histogram

plot of chunk unnamed-chunk-3

なさそうですね...

本題: 当選番号に連続する数字があるかどうか

本題です。

1等の当選番号である6つの数字に、連続があるかないかで場合分けして、

当選金額と当選者人数を調べてみます。

## ボーナス数字は無視
result6 = result %>% 
  select(-V7)

## 数ベクトルに連続がいくつあるか...を数える関数ContiNum
ContiNum = function(x){
  (diff(x) == 1 ) %>% 
    sum %>>% return
}

## 例えば、
## 1,2 と4,5が連なっているから、返り値は2
ContiNum(c(1,2,4,5,100))
## [1] 2
## 当選番号の全てで、連続の有無を確認
result6ContiNum = 
  result6 %>% 
  apply(1, FUN = ContiNum)

## データに追加
dat$contiNum = result6ContiNum

## 内容確認
dat %>% 
  select(result, contiNum) %>% 
  head
##                  result contiNum
## 1: 02 03 29 30 32 43 26        2
## 2: 01 05 06 12 30 31 24        2
## 3: 02 07 17 18 21 40 29        1
## 4: 02 03 04 12 22 29 11        2
## 5: 02 04 18 23 31 38 01        0
## 6: 03 09 19 22 23 40 10        1

連続の数が分かりました

結果: 当選番号の並びと当選者の数

当選者の数と当選金額を調べてみましょう。

連続している部分があるかどうかで場合わけして、当選の様子を見てみます。

## 当選番号に連続があるかないかと、
## 当選金額と当選者の数の表
dat %>% 
  filter(first > 0) %>% 
  mutate(existConti = (contiNum > 0)) %>% 
  group_by(existConti) %>% 
  summarise(money = mean(first),
            first_hit = mean(first_hit))
## Source: local data table [2 x 3]
## 
##   existConti     money first_hit
## 1       TRUE 153664475  2.889135
## 2      FALSE 136518218  3.775000

なるほど。

やはり、連続がある方が当選金額が多いですね。

連続があるとき、当選金額の平均は1億5366万円。

連続がないときは、当選金額の平均は1億3652万円。

全ての数字の組み合わせに対して1等の当選確率は同じでしょうから、

数字を連続させて選択したほうが効率が良さそうだ、と言えますかね。

まとめ

ロト6では、連続した数字を選択するほうが、儲けが大きくなりそうだと分かりました。

やはり、人間の性質として、連続した数字は選びづらいんですかね。