CakePHP5入門【WebAPI編㉑】ナンバーズ3を予想⑤
A子
ナンバーズ3って、三つの数字が全て異なる場合と、ダブルやトリプルがあるよね?
C菜
例えば、112や575みたいなのです~
B美
111や777って感じ…
A子
これまで考えた予想アルゴリズムではダブルやトリプルをサポートしてないから、ちょっと気になっちゃって…
C菜
000、111、222、333、444、555、666、777、888、999
という10通りしかありませんから、1000分の10で確率1%です~
(分母が1000なのは、000~999まで1000通りですからね~)
B美
例えば「00」のダブルでは
・001~009までの9通り
・010~090までの9通り
・100~900までの9通り
なので、合計は27通りね
A子
(「00」~「99」まで)
…ってことは、ダブルの総数は27×10で270通り
確率は、1000分の270で27%ってことになるね
C菜
三つの数字が全て異なる場合を「シングル」と呼ぶとすると…
| 出現確率の理論値 | |
|---|---|
| シングル | 72% |
| ダブル | 27% |
| トリプル | 1% |
…ってことでしょうか~
A子
ということは、4回に1回はダブルが出るってことになるね(確率的には…)
B美
「前回の結果に影響されることはない」ってのが基本的な考え方だから、シングルが10回以上連続することもあるわ
(抽選結果は「マルコフ性」を持つと考えられるからね)
A子
まるこふせい?
B美
「未来の状態は過去の履歴に依存しない」
…つまり、前回や前々回の抽選結果は、今回の抽選に影響を及ぼさないってことよ
C菜
それって「引っ張り」理論を全面否定しているってことでしょうか~?(苦笑)
B美
あ、でもそれが「引っ張り」を否定するものではないわ
A子
B美
理論的には無関係であっても、実績としては関係があるように見えていて、それが予想の一助になっている
ならば、それは実質的に「ある」と言っても良いんじゃないかと思うわけよ
A子
んじゃ、話を戻すけど、シングルが連続していてもダブルやトリプルの発生確率が向上するってことは無いんだよね?
C菜
たとえ1000回転以上回していても、大当たり確率は向上しないってことです~
(例えば300分の1の確率で大当たりする台ならば、パチンコ玉がチャッカーを通過するたびに毎回300分の1の確率で抽選が行われるんですよね~)
B美
例えば、先端が白い棒を7本、赤い棒を3本入れた筒から1本を抜き出すとき、7割の確率で白い棒になるわよね
でも、抜き出された棒は毎回筒へと戻されるってわけ
(2回目以降であっても「白い棒を抜き出す確率は7割」ってこと)
A子
ダブル(トリプルも)の出現を予想するのは難しいってのが結論?
B美
まぁ、確率は収束していくはずだから、理論値から乖離している場合は(理論値に近づくように)出現頻度が変わる可能性もあるけど…
(とは言っても、試行回数が7000回程度では全然収束しないけどね(苦笑))
C菜
2026年7月16日時点での予想的中状況はどうなっているのでしょうか~?
(7月って23回の抽選がありますけど、半分の12回が終了したので~)
A子
的中確率の理論値としては33%だけど、実績値は50%だよ
(ただし、収支としてはマイナスだけどね(笑))
C菜
それにしても、予想順位を考えるのに「古いものを上位にする」って方法をとりましたけど、問題がありそうですね~
A子
ここまでの結果を見た限りでは、「出現頻度」のほうが揃っている印象が強いんだよね
B美
スコアありの数字が5つのとき(パターンB)って、宝くじ(ナンバーズ3)を購入しないほうが良いかもしれない…
A子
(少なくとも年末くらいまでは…)
B美
予想した50~60通りを全て購入する場合、的中確率(実績値)が80%くらいは必要だってこと
(収支がプラスにならないからね)
C菜
逆に言えば、いかに上位10位までを予想するかってことにもなるんですけど~
A子
C菜
全23回の28%は6回なので、ほぼほぼ確率通りです~
A子
特にパターンBの勝率…(苦笑)
C菜
B美
まぁ、まだまだ実用には至っていないというのが結論だけど…(苦笑)
A子
PDFファイルの格納場所ってさ、「webroot/pdf」じゃん?
その中をさらに「年月」で区分したほうが良いんじゃない?
C菜
A子
あと、一覧表示についてもまずは「年月」メニューを表示して、そこから月ごとのファイル表示に遷移するの
B美
それじゃ、コマンドクラスである「src/Command/Num3boxCommand.php」と、一覧表示のための「src/Controller/TopController.php」を修正してみなさい
A子
まずは「Num3boxCommand.php」だけど、「execute」メソッドの下記の箇所を書き換えたよ
|
//格納ディレクトリ
$dir = WWW_ROOT."pdf".DS.date('Ym').DS; |
あ、赤字部分が追加箇所ね
C菜
|
//コマンドクラスで生成されたPDFファイルのディレクトリ一覧を取得
public function num3PdfDir() { //PDFファイルのディレクトリ一覧を取得 $dirs = glob(WWW_ROOT.'pdf'.DS.'*', GLOB_ONLYDIR); //降順ソート rsort($dirs); $this->set(compact('dirs')); } |
A子
(ほとんど「num3Pdf」メソッドと一緒だけどね)
|
//コマンドクラスで生成されたPDFファイルのファイル一覧を取得
public function num3PdfFile($ym) { $result = []; $pdfDir = WWW_ROOT.'pdf'.DS.$ym.DS; //PDFファイル取得 $files = glob($pdfDir . '*.pdf'); foreach ($files as $file) { $filename = basename($file); $base = pathinfo($filename, PATHINFO_FILENAME); $dateCode = substr($base, strlen('numbers3box_')); //日付とパターンを取得 $year = (int)substr($dateCode, 0, 4); $month = (int)substr($dateCode, 4, 2); $day = (int)substr($dateCode, 6, 2); $pattern = substr($dateCode, 8, 1); $week = $this->SixSevenWeek::getSeven($year, $month, $day); array_push($result, [$year, $month, $day, $week['week_str_short'], $pattern, $ym.DS.$filename]); } //ファイル名の降順でソート array_multisort(array_column($result, 5), SORT_DESC, $result); $this->set(compact('result')); } |
C菜
B美
その際、ディレクトリのオーナーを間違えないように!
(「Webサーバ(www-data)」ではなく、一般ユーザだからね)
C菜
ちなみに、下記がテスト結果ですよ~
(きちんと、ディレクトリ一覧のワンクッションが入ってます~)
↓
A子
あとは予想データ(及びその結果)を蓄積していくだけかー
B美
(実のところ、私もちょっぴり楽しみなのよね(苦笑))

