探偵ファイルのロト6の攻略法!?を分析する
探偵ファイルのロト6の攻略法を分析する
探偵ファイル〜スパイ日記〜/ロト6の攻略法!?/松本企業博士
探偵ファイルで、統計的な記事を見た。 気になったので分析してみた。
#離散値なのでbarplotを使った表に書き直しました
#2014.7.11追記
結構このページヘのアクセスが上位なので、一番言いたいことを
上に持ってきておきます。
ランダムであれば必勝法はあるはずがない。ダマされるな。
###追記終了
100000回のシミュレーションを行う。
## loto6
loto6 <- function() {
sample(43, 6, replace = FALSE)
}
nsim <- 1e+05
res <- matrix(0, ncol = 6, nrow = nsim)
sabun <- matrix(0, ncol = 5, nrow = nsim)
for (i in 1:nsim) {
res[i, ] <- sort(loto6())
sabun[i, ] <- diff(res[i, ])
}
>第858回には「29、32、33」等の近い番号が偏っているし、
4以内に3つの数字が出ることはどのくらいの頻度でおこるか計算する。
29、32、33 4以内に3つの数字が出ることはどのくらいでおこるか
ninai <- function(x) {
# 4以内に3つの数が出現するかどうか
min(x[3:6] - x[1:4]) <= 4
}
sum(apply(res, 1, ninai))/nsim
## [1] 0.2846
29%の回で4以内に3つの数が出現している。全然珍しくない。
直近の高頻出数字は「42」だとも言えそうだ。
# >直近の高頻出数字は「42」だとも言えそうだ。 9回のうち42が4回でている
# 9回のうち、同じ数が4回以上出る率
# >直近の高頻出数字は「42」だとも言えそうだ。 9回のうち42が4回でている
# 9回のうち、同じ数が4回以上出る率
renzoku <- numeric(nsim - 8)
for (i in 1:(nsim - 8)) {
renzoku[i] <- max(table(res[i:(i + 8), ])) #一番かぶった回数
}
sum(renzoku >= 4)/length(renzoku) #72%の確率で何かの数が9回中4回以上で観測される
## [1] 0.7292
barplot(table(renzoku)) #むしろ9回中4個の数字がかぶるのは当たり前
連続した9回を抽出した場合、72%の確率で何かの数が9回中4回以上で観測される。 つまりむしろ9回中で4個の数字がかぶるのは当たり前。
sabun.mean <- apply(sabun, 1, mean)
mean(sabun.mean) #差分の平均値 6.3弱ってところか
## [1] 6.292
median(sabun.mean)
## [1] 6.4
summary(sabun.mean)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 5.40 6.40 6.29 7.20 8.40
barplot(table(sabun.mean))
table(sabun.mean)
## sabun.mean
## 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8
## 1 2 9 17 37 65 93 152 236 349 460 606 758 953 1210
## 4 4.2 4.4 4.6 4.8 5 5.2 5.4 5.6 5.8 6 6.2 6.4 6.6 6.8
## 1485 1751 1995 2445 2642 3135 3519 3872 4273 4658 4983 5612 5672 5913 6254
## 7 7.2 7.4 7.6 7.8 8 8.2 8.4
## 6164 6067 5736 5367 4769 4011 3071 1658
quantile(sabun.mean, p = c(0.025, 0.975))
## 2.5% 97.5%
## 3.4 8.2
記事中に「差分の平均値は約7.1に収束」とあるが
平均の平均は6.292だし
medianは6.4のようで7.1と乖離が大きい。
しかし、飛び飛びの値しか取らないので表を見ると7が6164回
7.2が6067回
であり、7又は7.2(7.1くらいと表現可能か)が最頻値になる。
しかし最頻値を”収束する”と表現するのにはやや違和感が残るところである。
# 差分が1-15の間で均等というが本当にそうか
barplot(table(sabun))
sabun.r <- sum(sabun <= 15)/length(sabun)
sabun.r #1-15までの差分が観測される率
## [1] 0.9385
例では41連続で差分は15以下しか観測されていない。 一方、横に回数が書いてあり少なくともロト6では850回のデータが有る 連続した850回=850*5個の差分データが有れば、どの程度の確率で41連続15以下が続く部分を発見できるか。 ロケみつのサイコロの統計で自作した関数(
ロケミツのサイコロの統計その2(連続して1が出ないのが20回続いたらイカサマ?) - r-statistics-fanの日記
)を使用する
prenzoku <- function(m, q, r) {
pren <- numeric(m - r + 1)
pren[1] <- q^r
pren[2:(r + 1)] <- (1 - q) * q^r
for (i in (r + 2):(m - r + 1)) {
pren[i] <- (1 - q) * q^r * (1 - sum(pren[1:(i - r - 1)]))
}
return(sum(pren)) #答えの確率
}
prenzoku(850, sabun.r, 41)
## [1] 0.9914
むしろ99%の確率で41連続差分15以下の部分を探すことが出来る つまり、このようなデータを恣意的に探して提示できるのはあたりまえ。
しかし、好意的に解釈すると恣意的ではなく、ランダムにこの部分のデータを 抽出したのかもしれない。 41連続で15以下が続く確率を求める
sabun.r^41
## [1] 0.07423
7%くらいで起こりうる。それなりに珍しいが、たまたまそういう部分が抽出されてもおかしくない程度。
## 差分の標準偏差とCV
sabun.sd <- apply(sabun, 1, sd)
sabun.cv <- sabun.sd/sabun.mean
hist(sabun.sd) #差分の標準偏差
quantile(sabun.sd, p = c(0.025, 0.975))
## 2.5% 97.5%
## 1.673 9.680
hist(sabun.cv) #差分のCV
quantile(sabun.cv, p = c(0.025, 0.975))
## 2.5% 97.5%
## 0.3353 1.3827
ということで、ランダムであれば、当たり前に観測されることを 色々と書いているに過ぎない。
ランダムであれば必勝法はあるはずがない。 必勝法があるとすれば、数字の選び方に何か欠格があり ランダムになっていない場合くらいだが、考えにくいだろう。
あとは、ラッキーにも当選した時に単独当選なら金額が有利になるらしいので、
他人が選びにくい組合せにするというのはある程度有効だろう。(そもそも当たらないだろうから意味が無いが)