• FGO

    2017-06-11 03:05

    ■追記 間違って下書きのまま公開しちゃってます。そのうち清書します。

    要旨

    FGOのアイテムドロップを記録・集計しているサイトにFateGOアイテム効率劇場がある。このサイトのデータをから統計処理を考える。このサイトでは周回数とその間のドロップ数を記録することで、周回あたりのドロップ数の平均を計算している。しかし、この記録方法からはドロップ数の分散を計算することができない。既存の統計処理の多くは分散を必要とするため、このままでは統計処理を行うことができない。そこでドロップ数がポアソン分布に従うと仮定することで分散を推定し、これをもとに統計処理を行うことを考える。

    ポアソン分布の平均と分散

    ポアソン分布には平均と分散が等しいという性質がある。そのため周回あたりのドロップ数がポアソン分布に従うと仮定することで、分散が平均と等しいと推定することができる。

    標準誤差

    あるクエストの消費APを 、周回数を 、ドロップ数を とおく。ドロップ数がポアソン分布に従うとき、周回あたりのドロップ数の平均および分散 および標準誤差 は以下のように求められる。

    また、APあたりのドロップ数の平均および分散 および標準誤差 は以下のように求められる。

    カイ二乗検定による平均値の差の比較

    2つのクエストのAPあたりのドロップ率が異なるかどうかを調べたい。ドロップ数がポアソン分布に従うとき、カイ二乗検定を用いて調べることができる。カイ二乗検定を行うために観測度数と期待度数を求める。ここで2つのクエストの消費APをそれぞれ 、周回数をそれぞれ 、ドロップ数をそれぞれ とおく。このとき、観測度数はそれぞれ となる。また期待度数 はそれぞれ以下のように求められる。

    次にカイ二乗検定を用いてp値を求める。p値はExcel等の表計算ソフトにあるCHITESTという関数を用いて以下のようにして求めることができる。

    p値が有意水準0.05未満とき、一般に2つのクエストのAPあたりのドロップ率が異なるということができる。

    鬼瓢箪アイコンの頻度分布

    鬼瓢箪アイコンの頻度分布のグラフを作成した。

    ポアソン分布との比較


    礼装はドロップ率が低すぎるため、適合度検定をおこなえなかった。

    鬼瓢箪アイコンはポアソン分布と比較し有意差が認められ、ポアソン分布に近似できななかった。

    それ以外のアイテムはポアソン分布と比較し有意差が認められず、ポアソン分布に近似できた。


  • 広告
  • FGO「復刻:鬼哭酔夢魔京 羅生門 ショート版」ドロップ率検証

    2017-06-10 15:321

    2017年5月31日より開催された、「復刻:鬼哭酔夢魔京 羅生門 ショート版」のドロップ率の検証を行いました。FGOの検証は初めてですので、お手柔らかにお願いします。

    結論

    鬼ごろし級と鬼なかし級を比較すると、

    • 鬼瓢箪は鬼ごろし級が有利でした。
    • 輝石と魔石は鬼なかし級が有利でした。
    • それら以外のドロップはどちらも有利とはいえませんでした。
    方法

    鬼なかし級と鬼ごろし級にてドロップしたアイテムとその個数を周回ごとに記録しました。この検証のために、私が配信しているニコニコ生放送にて、データを収集してくださる方を募集しました。結果、鬼なかし級298周回分、鬼ごろし級512周回分のデータが集まりました。このデータをもとにBPあたりのドロップ数を集計しました。そしてアイテムごとに鬼なかし級と鬼ごろし級との間に差があるかどうかをT検定を用いて比較しました。

    結果

    結果は以下の通りです。T検定により得られたp値が有意水準0.05未満の時に有意差があると判断しました。

    鬼瓢箪はそのアイテム数とは別に、ドロップ時に表示されるアイコン数でも集計しました。「鬼瓢箪 / x3」が鬼瓢箪を3個獲得できるアイコン、「鬼瓢箪 / x4」が鬼瓢箪を4個獲得できるアイコン、「鬼瓢箪 / x3 + x4」がその和になります。

    輝石・魔石・秘石は各クラスのアイテムを合算しました。また、京人ドロップ素材は酔った京人からドロップする低レアリティの素材、腕ドロップ素材は鬼の右腕・鬼の左腕からドロップする高レアリティの素材を合算しました。これらのアイテムに日ごとのドロップ率に差がないか検定を試みましたが、日あたりのデータ数が少なく検定できませんでした。


    考察

    鬼瓢箪・輝石・魔石で有意差が認められました。それら以外のアイテムでは有意差は認められませんでした。鬼瓢箪は鬼ごろし級が有利、輝石・魔石は鬼なかし級が有利でした。

    鬼瓢箪のアイテム数は鬼ごろし級が有利でした。また、「鬼瓢箪 / x3 + x4」で示される鬼瓢箪のアイコン数もまた鬼ごろし級が有利でした。礼装による鬼瓢箪獲得数ボーナスはこのアイコン数に比例するため、このボーナスを加味した場合でも鬼ごろし級が有利と言えます。ただし、不思議なことに「鬼瓢箪 / x3」だけは鬼なかし級が有利でした。
    謝辞

    ドロップデータの収集に協力してくださったリスナーの方々、ありがとうございました。

    ソース
  • [艦これ][2016冬イベント] E3甲決戦支援考察

    2016-02-19 14:39829

    2016冬イベントE3甲における決戦支援の考察を行いました。

    当記事では砲撃支援について扱います。航空支援に関してはよーさんが考察しておりますので紹介いたします。

    対重巡棲姫・戦艦棲姫・空母棲姫

    棲姫クラスの敵は装甲が昼キャップを超えており、支援艦隊での昼キャップでの攻撃は装甲乱数次第では装甲を抜くことができず、装甲を抜けたとしてもかえって割合ダメージより低いダメージになってしまう場合があります。以下にCL1が命中した場合の平均ダメージをグラフで表します。交戦形態は彩雲を前提として、各交戦形態を加味して算出しています。




    上記グラフの通り、昼キャップ攻撃力150まで攻撃力が上がれば上がるほど、装甲を無駄に抜いてしまうことで平均ダメージが下がることが分かります。

    ここから、前哨戦では駆逐ハ級後期型elite確殺ラインである攻撃力117(戦艦表示火力113)、最終形態では駆逐に級後期型elite確殺ラインである攻撃力139(戦艦表示火力135)まで下げ、残りは電探等で命中率を挙げるのが効果的かと思われます。

    以下に前哨戦・最終形態それぞれでの支援編成例を示します。

    前哨戦

    最終形態

    対駆逐艦

    駆逐艦の装備が電探と主砲(火力+3)3積みのどちらが有効かを考察します。

    以下にCL1が命中した場合の敵駆逐艦の撃沈率をグラフで表します。交戦形態は彩雲を前提として、各交戦形態を加味して算出しています。


    上記グラフから、コモン駆逐艦に主砲3積みしても攻撃力64(表示火力53)にならず敵駆逐艦に効果は薄いため、電探でいいと思われます。

    夕立改二を代表する高火力駆逐艦であれば、CL1命中時の撃沈率の上昇がみられるため主砲3積みの選択肢に入るかと思われます。しかしそれでも確実に撃沈できるわけではない点には留意する必要があります。

    ソース

    グラフ作成に使用したRのソースです。

    グラフ <- function (攻撃力, 耐久, 装甲, main) {
    グラフ <- function (攻撃力, 耐久, 装甲, main) {
    平均ダメージ <- function (攻撃力, 耐久, 装甲) {
    補正後攻撃力 <- function (攻撃力, 交戦形態補正) {
    攻撃力 <- 攻撃力 * 交戦形態補正;
    攻撃力[攻撃力 > 150] <- (floor(sqrt(攻撃力 - 150) + 150))[攻撃力 > 150];
    return (攻撃力);
    };
    平均ダメージ <- function (攻撃力, 耐久, 装甲) {
    ダメージ <- rep(耐久 * 0.1, 装甲);
    防御力 <- 装甲 * 0.7 + seq(0, 装甲 - 1) * 0.6;
    ダメージ[攻撃力 - 防御力 > 0] <- (攻撃力 - 防御力)[攻撃力 - 防御力 > 0];
    return (mean(ダメージ));
    };
    return (平均ダメージ(補正後攻撃力(攻撃力, 1.2), 耐久, 装甲) * 0.15 + 平均ダメージ(補正後攻撃力(攻撃力, 1.0), 耐久, 装甲) * 0.45 + 平均ダメージ(補正後攻撃力(攻撃力, 0.8), 耐久, 装甲) * 0.4);
    };
    ylim <- c(0, ceiling(耐久 / 10));
    plot(攻撃力, sapply(攻撃力, function (攻撃力) (平均ダメージ(攻撃力, 耐久, 装甲))), ylim = ylim, type = 'l', xlab = '攻撃力', ylab = '平均ダメージ', main = main);
    lines(c(117, 117), ylim, col = 2);
    lines(c(139, 139), ylim, col = 3);
    legend('bottomleft', legend = c('ハ級確殺ライン', '二級確殺ライン'), col = c(2, 3), lty = c(1, 1));
    };
    グラフ(攻撃力, 耐久, 装甲, main);
    png(sprintf('%s.png', main), 680, 510);
    グラフ(攻撃力, 耐久, 装甲, main);
    dev.off();
    }
    グラフ(87:150, 350, 195, '重巡棲姫(前哨戦)');
    グラフ(87:150, 390, 208, '重巡棲姫(最終形態)');
    グラフ(87:150, 400, 160, '戦艦棲姫');
    グラフ(87:150, 350, 150, '空母棲姫');
    グラフ <- function (攻撃力, 耐久, 装甲, main) {
    グラフ <- function (攻撃力, 耐久, 装甲, main) {
    撃沈率 <- function (攻撃力, 耐久, 装甲) {
    補正後攻撃力 <- function (攻撃力, 交戦形態補正) {
    攻撃力 <- 攻撃力 * 交戦形態補正;
    攻撃力[攻撃力 > 150] <- (floor(sqrt(攻撃力 - 150) + 150))[攻撃力 > 150];
    return (攻撃力);
    };
    撃沈率 <- function (攻撃力, 耐久, 装甲) {
    return (mean((攻撃力 - (装甲 * 0.7 + seq(0, 装甲 - 1) * 0.6)) >= 耐久));
    };
    return (撃沈率(補正後攻撃力(攻撃力, 1.2), 耐久, 装甲) * 0.15 + 撃沈率(補正後攻撃力(攻撃力, 1.0), 耐久, 装甲) * 0.45 + 撃沈率(補正後攻撃力(攻撃力, 0.8), 耐久, 装甲) * 0.40);
    };
    plot(攻撃力, sapply(攻撃力, function (攻撃力) (撃沈率(攻撃力, 耐久, 装甲))), ylim = c(0, 1), type = 'l', xlab = '攻撃力', ylab = '撃沈率', main = main);
    lines(c(77, 77), c(0, 1), col = 2);
    lines(c(86, 86), c(0, 1), col = 3);
    legend('bottomright', legend = c('夕立改二素手', '夕立改二主砲3積み'), col = c(2, 3), lty = c(1, 1));
    }
    グラフ(攻撃力, 耐久, 装甲, main);
    png(sprintf('%s.png', main), 680, 510);
    グラフ(攻撃力, 耐久, 装甲, main);
    dev.off();
    }
    グラフ(58:140, 46, 36, '駆逐ハ級後期型elite');
    グラフ(58:140, 49, 48, '駆逐二級後期型elite');