loto6

統計解析システム R で LOTO6 のスランプグラフ

 

前回作成した ヒストグラム では当籤数字の全体的な偏りを見ましたが、もう少し実用的(?)な分析を可能とするために、 個別の数字についてスランプグラフを出力するスクリプトを作成しました。

スランプグラフでは、分析対象の数字の出現率(0%〜100%)を折れ線グラフで表します。 出現率を算出するにあたってはスパンを決める必要がありますが、 これは株式のテクニカルチャートでもお馴染みの移動平均線を真似て、 2種類(長期スパン=赤線、短期スパン=青線)用意しました。 また、分析対象の数字が当籤した場合には青○を打つようにしました。

上のスランプグラフでは、第1回から第417回までの過去データについて、 数字の 02 の出現率の変化を見ることができます。 黒字によるコメント(好調、不調)は、私なりの解釈を書き込んだものです。

統計解析システム R で LOTO6 のヒストグラム

 

統計解析システム R を使用して、LOTO6 のヒストグラムを作成してみました。

このヒストグラムでは、第1回から第416回までの過去データについて、 01〜43 の数字の出現頻度を表示しています。

作業表を使わない配列数式のサンプル

 

表計算の通常の数式では、ちょっと複雑な計算をしようとすると途中結果を保存するための作業表を作成する必要があります。 たとえば、指定された範囲の中に偶数は何個あるか?とか、 素数 は何個あるか?といった計算です。

複雑といっても、この程度の計算であれば、数式の代わりに 配列数式 を使うことで、鬱陶しい作業表の作成を回避できます。

配列数式の入力方法は、Googleドキュメントと Excel で異なります。 Googleドキュメントでは、=ARRAYFORMULA 関数を使用した数式を入力します。 一方の Excel では、数式を入力した後に Ctrl + Shift + Enter を入力します(そうすると数式が{}で囲まれて、配列数式に変換されたことを確認できます)。

以下に、Googleドキュメントのサンプルを示します。 特に素数のカウントは、複数条件での検索に応用できると思います。

sumif() の代わりに sum(if()) を、countif() の代わりに count(if()) を使用している点に注意しましょう。

LOTO6 過去の当せん番号を収集

 

より納得感のある数字を生成する方法の1つに、 過去の当せん番号に何らかの理論を適用して、 予想番号をはじき出すというのがあります。

どのような理論を適用するにしても、 データベースなり表計算ソフトなりに、 過去の当せん番号を取り込むことになるでしょう。

本稿では、Ruby と Hpricot により、 みずほ銀行 宝くじコーナー:ロト当せん番号案内 をスクレイピングします。

以下に、実行結果のサンプルを示します。

$ ruby --version
ruby 1.8.6 (2008-06-20 patchlevel 230) [i386-linux]
$ chmod u+x lucky_num_loto6.rb
$ ./lucky_num_loto6.rb
0001,2000-10-05,02,08,10,13,27,30,39
0002,2000-10-12,01,09,16,20,21,43,05
0003,2000-10-19,01,05,15,31,36,38,13
0004,2000-10-26,16,18,26,27,34,40,13
0005,2000-11-02,09,15,21,23,27,28,43
0006,2000-11-09,06,12,23,25,28,38,22
0007,2000-11-16,07,19,21,23,33,35,26
0008,2000-11-23,11,16,18,20,42,43,28
0009,2000-11-30,11,19,23,38,39,42,15
0010,2000-12-07,01,03,19,21,35,39,26
… 途中省略 …
0368,2007-11-08,07,10,18,21,33,35,13
0367,2007-11-01,10,13,17,38,41,43,28
0366,2007-10-25,12,13,15,18,30,41,21
0365,2007-10-18,06,19,20,28,36,37,11
0364,2007-10-11,07,11,12,19,33,42,36
0363,2007-10-04,03,06,07,22,27,31,04
0362,2007-09-27,07,10,15,20,37,40,28
0361,2007-09-20,01,21,28,30,37,43,31
0360,2007-09-13,02,03,06,14,26,42,25
0359,2007-09-06,03,05,19,20,23,27,40
$ 

LOTO6 クイックピック(QP)

 

連ドラ「ロト6で3億2千万円当てた男」を見ていたら、ロ ト6 にチャレンジしたくなりました。 当選金はすべて株のシステムトレードで運用することとして、既に脳内資産は5億円くらいになってます。

ロト6では6個の異なる数字を選びますが、数字選びに悩むと髪の毛に悪影響が出そうなので、ここは華麗に Ruby を使います。

irb を起動して、43文字の呪文を唱えます:
$ irb --simple-prompt
>> 5.times{p((1..43).sort_by{rand}[0,6].sort)}
[1, 13, 24, 29, 37, 38]
[14, 23, 26, 28, 32, 33]
[17, 21, 22, 36, 40, 43]
[2, 6, 7, 17, 38, 42]
[13, 15, 24, 34, 38, 43]
=> 5
>>

お告げの数字が出たら、さらに神頼みを忘れないようにしましょう。

参考: 満足せる豚。眠たげなポチ。:[Ruby] しびれる配列のシャッフル方法