[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要らない気もするけど気にしてはいけない(戒め)


