[Meisyo]練習難易度の不均衡是正への分析的アプローチから早3か月。
「練習ごとに難易度が違いすぎるんですけど!!」という不満は少しは解消されたかなー・・・
効果測定してないのにわかるの?エスパーなの?
というわけで・・・
管理画面に入れちゃいました!
これでいつでも見れるよ!
結果発表。
ポイントの分布が大きければ大きいほど、カラーバーが太くなります。
今後はこれを見て調整します。
・・・って前問題になってた練習だよねコレ・・・
回数も少ないし・・・避けないでドウゾ
というわけで、
game11はPointを2倍に、
game4は全体的にポイントを緩和+ビンゴのカウント方式を変更(簡素化)しました。
カウント方式の変更内容
以前は、
スロットで出た5つの数字をすべて比較する方式でした。
今回は、
スロットで出た5つの数字の種類を数える方式にしました。
この変更によって、以前は下記のような当たってるだろっていうのもなくなります。
例1:
11,11,12,12,13
前→1ビンゴ
今→2ビンゴ
例2:
9,9,11,11,11
前→1ビンゴ
今→3ビンゴ
詳しい計算は以下の通り。
例1:
11,11,12,12,13
↓
種類ごとに数字をまとめる(一意化)
→11,12,13
↓
[11,12,13]の配列の個数を計算
→3
↓
5-配列の個数(3)
→2ビンゴ!
例2:
9,9,9,11,11
↓
種類ごとに数字をまとめる(一意化)
→9,11
↓
[9,11]の配列の個数を計算
→2
↓
5-配列の個数(2)
→3ビンゴ!
例:完全ビンゴ
1,1,1,1,1
↓
種類ごとに数字をまとめる(一意化)
→1
↓
[1]の配列の個数を計算
→1
↓
5-配列の個数(1)
→4ビンゴ!(=完全ビンゴ)
すみません。
思いつかなくてどうにかできる方法で実装していました。(でもどうにか、、なっていない)
改善していきます。orz
後、思ったのですが・・・
SQLでだいたいのことができるので、Python要らなくね?って思ったり。
というわけで、SQLを置いていきます。何かの参考に!
SELECT s.action_no ,SUM(s.count_uu) AS total_uu ,CEIL(SUM(s.point * count_uu) / SUM(s.count_uu)) AS ave_point ,SUM(CASE WHEN FLOOR(s.point / 10) = 0 THEN count_uu ELSE 0 END) AS point_00 ,SUM(CASE WHEN FLOOR(s.point / 10) = 1 THEN count_uu ELSE 0 END) AS point_01 ,SUM(CASE WHEN FLOOR(s.point / 10) = 2 THEN count_uu ELSE 0 END) AS point_02 ,SUM(CASE WHEN FLOOR(s.point / 10) = 3 THEN count_uu ELSE 0 END) AS point_03 ,SUM(CASE WHEN FLOOR(s.point / 10) = 4 THEN count_uu ELSE 0 END) AS point_04 ,SUM(CASE WHEN FLOOR(s.point / 10) = 5 THEN count_uu ELSE 0 END) AS point_05 ,SUM(CASE WHEN FLOOR(s.point / 10) = 6 THEN count_uu ELSE 0 END) AS point_06 ,SUM(CASE WHEN FLOOR(s.point / 10) = 7 THEN count_uu ELSE 0 END) AS point_07 ,SUM(CASE WHEN FLOOR(s.point / 10) = 8 THEN count_uu ELSE 0 END) AS point_08 ,SUM(CASE WHEN FLOOR(s.point / 10) = 9 THEN count_uu ELSE 0 END) AS point_09 ,SUM(CASE WHEN FLOOR(s.point / 10) = 10 THEN count_uu ELSE 0 END) AS point_10 ,SUM(CASE WHEN FLOOR(s.point / 10) = 11 THEN count_uu ELSE 0 END) AS point_11 ,SUM(CASE WHEN FLOOR(s.point / 10) = 12 THEN count_uu ELSE 0 END) AS point_12 ,SUM(CASE WHEN FLOOR(s.point / 10) = 13 THEN count_uu ELSE 0 END) AS point_13 ,SUM(CASE WHEN FLOOR(s.point / 10) = 14 THEN count_uu ELSE 0 END) AS point_14 ,SUM(CASE WHEN FLOOR(s.point / 10) = 15 THEN count_uu ELSE 0 END) AS point_15 ,SUM(CASE WHEN FLOOR(s.point / 10) = 16 THEN count_uu ELSE 0 END) AS point_16 ,SUM(CASE WHEN FLOOR(s.point / 10) = 17 THEN count_uu ELSE 0 END) AS point_17 ,SUM(CASE WHEN FLOOR(s.point / 10) = 18 THEN count_uu ELSE 0 END) AS point_18 ,SUM(CASE WHEN FLOOR(s.point / 10) = 19 THEN count_uu ELSE 0 END) AS point_19 ,SUM(CASE WHEN FLOOR(s.point / 10) = 20 THEN count_uu ELSE 0 END) AS point_20 # 全体集計 FROM ( SELECT SUBSTRING_INDEX(action, ',', 1) AS action_no ,CEIL(SUBSTRING_INDEX(action, ',', -1)) AS point ,COUNT(action) AS count_uu FROM acts WHERE sub = 'practice' AND time >= '$date 00:00:00' AND LENGTH(SUBSTRING_INDEX(action, ',', 1)) > 0 AND CEIL(SUBSTRING_INDEX(action, ',', -1)) BETWEEN 0 AND 200 GROUP BY action_no ,point DIV 10 ORDER BY action_no ) AS s GROUP BY s.action_no;
DIV要らない気もするけど気にしてはいけない(戒め)