錬精術式に含まれる当たりの数の期待値(8/15リニューアル)

錬精術式に含まれる当たりの数の期待値(8/15リニューアル)

錬精術式に含まれる当たりの数の期待値(8/15リニューアル)

1 当たりの定義

★5チャイルド、★5ソウルカルタ、狙ってるコスチュームを全て等しく同じ価値の当たりだとする。

2 錬精術式に含まれる当たりの数の期待値

2.1 コスチュームは一つも要らない(0)1

0.59

2.2 コスチュームの半分ぐらいを狙う(0.5)

2.12

2.3 どんなコスチュームが来ても取る(1)

3.64

3 錬精術式に含まれる当たりの数の分布

Table 1: 当たりの数の分布
狙うコスチュームの割合 0 1 2 3 4
0 52.0% 37.9% 9.25% 0.849% 0.0242%
0.52 4.93% 22.1% 37.3% 27.9% 7.80%
1 0% 0% 3.25% 29.5% 67.2%

3.1 コード3

import Data.List

----------------------------------------------------------------
---- Misc.

-- import Data.Function
(&) = flip ($)

fac 0 = 1
fac n = n * fac (n - 1)

p `c` q = fac p / fac q / fac (p - q)

(~=) a b = abs (a - b) / a <= 0.1^3

----------------------------------------------------------------

----------------------------------------------------------------
---- リストの定義

list1 g ns s = (31.528*g + 7.136*4*ns + 2.992*10*s + 10) / 100
list2 nr r nn n = (13.354*4*nr + 3.804*7*r + 3.333*3*nn + 0.550*9*n + 5) / 100
list3 nr r nn n = (1.662*4*nr + 0.470*7*r + 11.126*3*nn + 1.852*9*n + 22) / 100

-- list1 1 1 1 ~= 1
-- list2 1 1 1 1 ~= 1
-- list3 1 1 1 1 ~= 0.82

----------------------------------------------------------------

----------------------------------------------------------------
---- 計算

ps g ns s nr r nn n = map (\p -> (1-p)) [list1 g ns s, list2 nr r nn n, list3 nr r nn n, list3 nr r nn n]

inv n ps = map (\p -> (1-p)) xs ++ ys
  where
    (xs, ys) = splitAt n ps

prob i g ns s nr r nn n = (ps g ns s nr r nn n & permutations & fmap (inv i) & fmap product) & sum & \x -> x * 4 `c` (fromIntegral i) / fac 4

expectedValue g ns s nr r nn n = list1 g ns s + list2 nr r nn n + 2 * list3 nr r nn n

probabilityDistribution g ns s nr r nn n = [ prob i g ns s nr r nn n | i <- [0..4] ]

-- 欲するコスチュームの枚数を入れる
analyse 期間限定の枚数 新Sスキンの枚数 旧Sスキンの枚数 新Rスキンの枚数 旧Rスキンの枚数 新Nスキンの枚数 旧Nスキンの枚数 = do
  putStr "Expected Value = " >> print (expectedValue g ns s nr r nn n)
  putStr "Probability Distribution (from 0 to 4) = " >> print (probabilityDistribution g ns s nr r nn n)
  where
    g = 期間限定の枚数/1
    ns = 新Sスキンの枚数/4
    s = 旧Sスキンの枚数/10
    nr = 新Rスキンの枚数/4
    r = 旧Rスキンの枚数/7
    nn = 新Nスキンの枚数/3
    n = 旧Nスキンの枚数/9

-- *Main> analyse 0 4 6 3 2 2 0
-- Expected Value = 2.16188
-- Probability Distribution (from 0 to 4) = [4.391183659997447e-2,0.20955201496947803,0.3716843886917189,0.29044783130823004,8.440392843059846e-2]

----------------------------------------------------------------

4 前回と今回のコスチュームの割合

Table 2: リスト1におけるコスチュームの割合
  期間限定 新Sコスチューム 旧Sコスチューム
前回 31.1% 28.5%4 30.0%
今回 31.5% 28.5% 29.9%
Table 3: リスト2におけるコスチュームの割合
  新Rコスチューム 旧Rコスチューム 新Nコスチューム 旧Nコスチューム
前回 53.4% 26.7% 10.0% 4.96%
今回 53.4% 26.6% 10.0% 4.95%
Table 4: リスト3におけるコスチュームの割合
  新Rコスチューム 旧Rコスチューム 新Nコスチューム 旧Nコスチューム
前回 6.66% 3.32% 33.4% 16.6%
今回 6.65% 3.29% 33.4% 16.7%

5 結論

期待値や分布などは前回とほとんど変わっていない。

また新登場のコスチュームと既存のコスチュームのリストに占める割合は一定に保たれている。 そして、その2者の比はおおよそ2:1(新:旧)になっている。

Footnotes:

1
*Main> expectedValue 0 0 0 0 0 0 0
0.5900000000000001
2
*Main> probabilityDistribution 0.5 0.5 0.5 0.5 0.5 0.5 0.5
[4.927242675968992e-2,0.2213861915459442,0.3726884346040276,0.27860984911535236,7.804309797498597e-2]
3

Haskellで書かれてます

4

9.511*3 ~= 28.532999999999998 ~= 28.5

Created: 2019-08-18 日 18:25

Emacs 25.2.1 (Org mode 8.2.10)

Validate

Comments