お金が欲しいので、ロト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)
まずは、当選金額の確認です。いくら貰えるのか、気になります。
今回扱うデータでは、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
なさそうですね...
本題です。
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では、連続した数字を選択するほうが、儲けが大きくなりそうだと分かりました。
やはり、人間の性質として、連続した数字は選びづらいんですかね。