CakePHP5入門【WebAPI編⑳】ナンバーズ3を予想④
A子
あれで作られたPDFファイルをブラウザで閲覧できるようにしたいんだよね
C菜
A子
ただし、一覧は手動で作るんじゃなくて、自動的に取得したいと思ってる
(面倒くさいから…)
B美
(PDFファイルだけを限定して取得することも可)
A子
そういうのを待っていた
C菜
あと「templates/Top/index.php」内に上記メソッドへのリンクも~
A子
PDFファイルのファイル名って、「年月日」情報を持つけどさ
加えて「パターン情報(前回のA,B,C)」も持つようにしようよ
C菜
パターンごとの的中率を調べることもできそうです~
「numbers3box_20260701B.pdf」って感じにするんですね~?
A子
あ、予想できないとき(スコア有りの数字が4~6個以外の場合)は「X」を末尾に付けよう
んじゃ、「src/Command/Num3boxCommand.php」を修正するね
(赤字部分が追加した箇所)
|
//スコア有無の数で処理を切り分ける
$pattern = ''; $box_set = []; $scoreMoreCount = count($scoreMore); $scoreLessCount = count($scoreLess); if ($scoreMoreCount == 4 && $scoreLessCount == 6) { //パターンA $pattern = 'A'; $combi = $this->PermutationAndCombination->combination($scoreLess, 2); foreach ($combi as $row) { foreach ($scoreMore as $val) { array_push($box_set, [$row[0], $row[1], $val]); } } } elseif ($scoreMoreCount == 5 && $scoreLessCount == 5) { //パターンB $pattern = 'B'; $combi = $this->PermutationAndCombination->combination($scoreMore, 2); foreach ($combi as $row) { foreach ($scoreLess as $val) { array_push($box_set, [$row[0], $row[1], $val]); } } } elseif ($scoreMoreCount == 6 && $scoreLessCount == 4) { //パターンC $pattern = 'C'; $combi = $this->PermutationAndCombination->combination($scoreMore, 2); foreach ($combi as $row) { foreach ($scoreLess as $val) { array_push($box_set, [$row[0], $row[1], $val]); } } } ・・・ if (count($result) == 0) { $pattern = 'X'; $content .=<<<EOF <div style="width: 100%;text-align: center;"> <h3>ボックス値(予想)</h3> 【{$year}年{$month}月{$day}日】 <br /><br /><br /> <span style="color: red;">スコアの状態が予想可能な範囲ではありません。</span> EOF; } else { ・・・ //ファイル名の決定と保存 $fileName = $dir.'numbers3box_'.date('Ymd').$pattern.'.pdf'; ・・・ |
B美
C菜
あ、トップページから上記メソッドへのリンクも~
|
//コマンドクラスで生成されたPDFファイルの一覧を取得
public function num3Pdf() { } |
A子
|
//コマンドクラスで生成されたPDFファイルの一覧を取得
public function num3Pdf() { $result = []; $pdfDir = WWW_ROOT.'pdf'.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, $filename]); } //ファイル名の降順でソート array_multisort(array_column($result, 5), SORT_DESC, $result); $this->set(compact('result')); } |
あ、「initialize」メソッド内には次の一文を追加したよ
| $this->loadComponent('SixSevenWeek'); |
C菜
それでは、私のほうでビューファイルを記述してみます~
A子
ちなみに、「表示」をクリックすると別画面にPDFファイルが表示されるよ
C菜
このときの抽選結果(当選番号)は「768」だったので、ボックスでは見事的中しましたよ~
(順位2位の値を確認してください~)
B美
1000通りの中の360通りは的中確率の理論値としては36%にもなるわね
そりゃ当たるでしょ(苦笑)
(3回に1回は当たるってことだし…)
A子
B美
現に7月1日も50個の予想の中に当選番号はあるけど、第21位だし…
(あと7月3日については、完全にはずれてるわ)
A子
ロマンを追い求めるって言葉を知らないのかよ
C菜
しばらくは(この予想処理を)放置しておきましょう~
B美
(これをあてにして宝くじを購入してから、はずれちゃって文句を言わないように!)
ちなみに的中確率の理論値は
・上位10通りを購入 → 6%
・パターンA(60通り)を全て購入 → 36%
・パターンB(50通り)を全て購入 → 30%
・パターンC(60通り)を全て購入 → 36%
となるわ
この「実験」で検証したいのは、これらの理論値が実際にはどこまで変化することになるか…ってことよ
(的中確率の多少の向上が見られると良いんだけどね(苦笑))
A子
(逆に、そうならなければ大ショックだよ)
C菜
楽しみです~

