デビルランブルにおける1勝あたりの報酬 9/30リニューアル

デビルランブルにおける1勝あたりの報酬 9/30リニューアル

デビルランブルにおける1勝あたりの報酬 9/30リニューアル

1 合計1

 勝ち数 オニキス ゴールド ランブルコイン パスポイント クリスタル
3勝 600 23000 900 45 30
5勝 1000 38000 1600 69 30
10勝 1600 73000 2900 93 30
20勝 2800 133000 5200 117 30
UNKNOWN1勝 600 10000 500 24 0
UNKNOWN2勝 1800 25000 1000 48 0
UNKNOWN3勝 4200 53000 1800 117 30
UNKNOWN3勝+2勝 4600 68000 2500 141 30
UNKNOWN3勝+7勝 5200 103000 3800 165 30
UNKNOWN3勝+17勝 6400 163000 6100 189 30

2 1勝あたりの報酬

 勝ち数 オニキス ゴールド ランブルコイン パスポイント クリスタル
3勝 200 7667 300 15 10
5勝 200 7600 320 13.8 6
10勝 160 7300 290 9.30 3
20勝 140 6650 260 5.85 1.50
UNKNOWN1勝 600 10000 500 24 0
UNKNOWN2勝 900 12500 500 24 0
UNKNOWN3勝 1400 17667 600 39 10
UNKNOWN3勝+2勝 920 13600 500 28.2 6
UNKNOWN3勝+7勝 520 10300 380 16.5 3
UNKNOWN3勝+17勝 320 8150 305 9.45 1.50

3 合計の差分(1勝あたり)

 勝ち数 オニキス ゴールド ランブルコイン パスポイント クリスタル
3勝 200 7667 300 15 10
5勝 200 7500 350 12 0
10勝 120 7000 260 4.80 0
20勝 120 6000 230 2.40 0
UNKNOWN1勝 600 10000 500 24 0
UNKNOWN2勝 1200 15000 500 24 0
UNKNOWN3勝 2400 28000 800 69 30
UNKNOWN3勝+2勝 200 7500 350 12 0
UNKNOWN3勝+7勝 120 7000 260 4.80 0
UNKNOWN3勝+17勝 120 6000 230 2.40 0

4 UNKNOWN3勝+17勝に対しての割合

 勝ち数 オニキス ゴールド ランブルコイン パスポイント クリスタル  
3勝 9.38% 14.1% 14.8% 23.8% 100%  
5勝 15.6% 23.3% 26.2% 36.5% 100%  
10勝 25% 44.8% 47.5% 49.2% 100%  
20勝 43.8% 81.6% 85.2% 61.9% 100%  
UNKNOWN1勝 9.38% 6.13% 8.20% 12.7% 0%  
UNKNOWN2勝 28.1% 15.3% 16.4% 25.4% 0%  
UNKNOWN3勝 65.6% 32.5% 29.5% 61.9% 100%  
UNKNOWN3勝+2勝 71.9% 41.7% 41.0% 74.6% 100%  
UNKNOWN3勝+7勝 81.2% 63.2% 62.3% 87.3% 100%  
UNKNOWN3勝+17勝 100% 100% 100% 100% 100%  

5 コード2

import Control.Monad
import Text.Printf

-- [オニキス, ゴールド, ランブルコイン, パスポイント, クリスタル]

勝利報酬 = [0,5000,200,0,0] :: [Double]

リザの宿題3回プレイ = [400,5000,0,0,30]

ランブルミッション3勝 = [200,3000,300,0,0]
ランブルミッション5勝 = [400,5000,300,0,0]
ランブルミッション10勝 = [600,10000,300,0,0]
ランブルミッション20勝 = [1200,10000,300,0,0]
ランブルミッションUNKNOWN1勝 = [600,5000,300,0,0]
ランブルミッションUNKNOWN2勝 = [1200,10000,300,0,0]
ランブルミッションUNKNOWN3勝 = [1800,15000,300,0,0]

デビルパスミッション3回プレイ = [0,0,0,21,0]
デビルパスミッション3勝 = [0,0,0,24,0]
デビルパスミッション5勝 = [0,0,0,24,0]
デビルパスミッション10勝 = [0,0,0,24,0]
デビルパスミッション20勝 = [0,0,0,24,0]
デビルパスミッションUNKNOWN1勝 = [0,0,0,24,0]
デビルパスミッションUNKNOWN2勝 = [0,0,0,24,0]
デビルパスミッションUNKNOWN3勝 = [0,0,0,24,0]

nul = [0,0,0,0,0]

合計3勝 =
  zipWith (+) (liftM (3 *) 勝利報酬) $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  nul

合計5勝 =
  zipWith (+) (liftM (5 *) 勝利報酬) $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) ランブルミッション5勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  zipWith (+) デビルパスミッション5勝 $
  nul

合計10勝 =
  zipWith (+) (liftM (10 *) 勝利報酬) $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) ランブルミッション5勝 $
  zipWith (+) ランブルミッション10勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  zipWith (+) デビルパスミッション5勝 $
  zipWith (+) デビルパスミッション10勝 $
  nul

合計20勝 =
  zipWith (+) (liftM (20 *) 勝利報酬) $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) ランブルミッション5勝 $
  zipWith (+) ランブルミッション10勝 $
  zipWith (+) ランブルミッション20勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  zipWith (+) デビルパスミッション5勝 $
  zipWith (+) デビルパスミッション10勝 $
  zipWith (+) デビルパスミッション20勝 $
  nul

合計UNKNOWN1勝 =
  zipWith (+) 勝利報酬 $
  zipWith (+) ランブルミッションUNKNOWN1勝 $
  zipWith (+) デビルパスミッションUNKNOWN1勝 $
  nul

合計UNKNOWN2勝 =
  zipWith (+) (liftM (2 *) 勝利報酬) $
  zipWith (+) ランブルミッションUNKNOWN1勝 $
  zipWith (+) ランブルミッションUNKNOWN2勝 $
  zipWith (+) デビルパスミッションUNKNOWN1勝 $
  zipWith (+) デビルパスミッションUNKNOWN2勝 $
  nul

合計UNKNOWN3勝 =
  zipWith (+) (liftM (3 *) 勝利報酬) $
  zipWith (+) ランブルミッションUNKNOWN1勝 $
  zipWith (+) ランブルミッションUNKNOWN2勝 $
  zipWith (+) ランブルミッションUNKNOWN3勝 $
  zipWith (+) デビルパスミッションUNKNOWN1勝 $
  zipWith (+) デビルパスミッションUNKNOWN2勝 $
  zipWith (+) デビルパスミッションUNKNOWN3勝 $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  nul

合計UNKNOWN3勝2勝 =
  zipWith (+) (liftM (5 *) 勝利報酬) $
  zipWith (+) ランブルミッションUNKNOWN1勝 $
  zipWith (+) ランブルミッションUNKNOWN2勝 $
  zipWith (+) ランブルミッションUNKNOWN3勝 $
  zipWith (+) デビルパスミッションUNKNOWN1勝 $
  zipWith (+) デビルパスミッションUNKNOWN2勝 $
  zipWith (+) デビルパスミッションUNKNOWN3勝 $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) ランブルミッション5勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  zipWith (+) デビルパスミッション5勝 $
  nul

合計UNKNOWN3勝7勝 =
  zipWith (+) (liftM (10 *) 勝利報酬) $
  zipWith (+) ランブルミッションUNKNOWN1勝 $
  zipWith (+) ランブルミッションUNKNOWN2勝 $
  zipWith (+) ランブルミッションUNKNOWN3勝 $
  zipWith (+) デビルパスミッションUNKNOWN1勝 $
  zipWith (+) デビルパスミッションUNKNOWN2勝 $
  zipWith (+) デビルパスミッションUNKNOWN3勝 $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) ランブルミッション5勝 $
  zipWith (+) ランブルミッション10勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  zipWith (+) デビルパスミッション5勝 $
  zipWith (+) デビルパスミッション10勝 $
  nul

合計UNKNOWN3勝17勝 =
  zipWith (+) (liftM (20 *) 勝利報酬) $
  zipWith (+) ランブルミッションUNKNOWN1勝 $
  zipWith (+) ランブルミッションUNKNOWN2勝 $
  zipWith (+) ランブルミッションUNKNOWN3勝 $
  zipWith (+) デビルパスミッションUNKNOWN1勝 $
  zipWith (+) デビルパスミッションUNKNOWN2勝 $
  zipWith (+) デビルパスミッションUNKNOWN3勝 $
  zipWith (+) リザの宿題3回プレイ $
  zipWith (+) ランブルミッション3勝 $
  zipWith (+) ランブルミッション5勝 $
  zipWith (+) ランブルミッション10勝 $
  zipWith (+) ランブルミッション20勝 $
  zipWith (+) デビルパスミッション3回プレイ $
  zipWith (+) デビルパスミッション3勝 $
  zipWith (+) デビルパスミッション5勝 $
  zipWith (+) デビルパスミッション10勝 $
  zipWith (+) デビルパスミッション20勝 $
  nul

xs = [合計3勝, 合計5勝, 合計10勝, 合計20勝, nul, 合計UNKNOWN1勝, 合計UNKNOWN2勝, 合計UNKNOWN3勝, 合計UNKNOWN3勝2勝, 合計UNKNOWN3勝7勝, 合計UNKNOWN3勝17勝]

ys = [3, 5, 10, 20, 0, 1, 2, 3, 5, 10, 20]

xs' = nul:xs

ys' = 0:ys

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

合計 = xs

一勝あたり = [ liftM (flip (/) $ ys!!i) $ xs!!i | i <- [0..10] ]

差分 = [ liftM (flip (/) $ (ys'!!(i+1)) - (ys'!!i)) $ zipWith (-) (xs'!!(i+1)) (xs'!!i) | i <- [0..10] ]

割合 = [ zipWith (/) (xs!!i) 合計UNKNOWN3勝17勝 | i <- [0..10] ]

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

print1 x
  | floor x == ceiling x = printf "%.0f" x
  | x >= 100 = printf "%.0f" x
  | x >= 10 = printf "%.1f" x
  | x >= 1 = printf "%.2f" x
  | x >= 0.1 = printf "%.3f" x
  | otherwise = printf "%.0f" x

listToCSV xss = mapM f xss 
 where
    f xs = mapM (\x -> print1 x >> putStr ", ") xs >> putStrLn ""

listToCSV' xss = mapM f xss 
 where
    f xs = mapM (\x -> return (100 * x) >>= print1 >> putStr "%, ") xs >> putStrLn ""

-- listToCSV 合計
-- listToCSV 一勝あたり
-- listToCSV 差分
-- listToCSV' 割合

6 結論

勝利報酬のゴールドが1000から5000に変わっただけですね。

Footnotes:

1

連勝ボーナスは無視。

2

Haskellで書かれてます。

Created: 2019-10-12 土 19:20

Emacs 25.2.1 (Org mode 8.2.10)

Validate

Comments