Irohabook
0
43

ブルーアーカイブの水着ハナコガチャ、チュートリアルを35回やったらリセマラ終了できそう?

ブルーアーカイブの2.5周年ガチャで、自分なりのリセマラ終了基準が定まってきた。実際にリセマラをやる前に、リセマラ所要時間の期待値を計算しようと思って、さっきPythonで推定チュートリアル回数を求めました。

計算方法にまちがいがあったらすみません。この記事は娯楽程度に楽しんでください。期待値や確率は保証できません。あくまでも私個人の趣味で計算したにすぎません(というか、計算してからやらないと危なっかしい感じがした)。

私の終了基準は「水着ホシノとミカのどちらか一方は必ず引く」というものです。

  • 水着ホシノまたはミカは確実に引く
  • 片方のみの場合はヒマリまたはアコを最低でも1人引く
  • 今回は水着ハナコとワカモは判断材料に入れてない

ガチャは水着ハナコピックアップで40連引くものとします。それ以外のガチャは考慮してません。40という数字も変数にしているので、50連でも30連でも計算できます。

import math

# 水着ハナコの出現確率 pickup
pickup = 0.7 / 100

# 水着ホシノとミカの出現確率 exclusive
exclusive = 0.3 / 100

# ヒマリとアコの出現確率 rare
rare = (4.4 / 100) / 81


def pattern_probability(name: str = '',
                        hanako: int = 1,
                        hoshino: int = 1,
                        mika: int = 1,
                        himari: int = 1,
                        ako: int = 1,
                        per: int = 40):
    total = hanako + hoshino + mika + himari + ako

    probability = pow(pickup, hanako) * \
                  pow(exclusive, hoshino) * \
                  pow(exclusive, mika) * \
                  pow(rare, himari) * \
                  pow(rare, ako) * \
                  pow(1 - pickup - exclusive - rare, per - total) * \
                  math.comb(per, per - hanako) * \
                  math.comb(per - hanako, per - hanako - hoshino) * \
                  math.comb(per - hanako - hoshino, per - hanako - hoshino - mika) * \
                  math.comb(per - hanako - hoshino - mika, per - hanako - hoshino - mika - himari) * \
                  math.comb(per - hanako - hoshino - mika - himari, per - total)

    print(f'{name} = {round(probability * 100, 4)}%')

    return probability


def goal(per: int = 40):
    name = '5人全員くる'
    probability = pattern_probability(name=name, hanako=1, hoshino=1, mika=1, himari=1, ako=1, per=per)

    name = 'ヒマリまたはアコがこない'
    probability += pattern_probability(name=name, hanako=1, hoshino=1, mika=1, himari=1, ako=0, per=per) * 2

    name = '水着ホシノとミカはくる、ヒマリとアコはこない'
    probability += pattern_probability(name=name, hanako=1, hoshino=1, mika=1, himari=0, ako=0, per=per)

    name = '水着ハナコがこない'
    probability += pattern_probability(name=name, hanako=0, hoshino=1, mika=1, himari=1, ako=1, per=per)

    name = '水着ハナコがこない、ヒマリまたはアコがこない'
    probability += pattern_probability(name=name, hanako=0, hoshino=1, mika=1, himari=1, ako=0, per=per) * 2

    name = '水着ハナコ、ヒマリ、アコがこない'
    probability += pattern_probability(name=name, hanako=0, hoshino=1, mika=1, himari=0, ako=0, per=per)

    name = '水着ホシノまたはミカがこない→絶対ヒマリまたはアコは必要:水着ハナコいるバージョン'
    probability += pattern_probability(name=name, hanako=1, hoshino=1, mika=0, himari=1, ako=0, per=per) * 4

    name = '水着ホシノまたはミカがこない→絶対ヒマリまたはアコは必要:水着ハナコいないバージョン'
    probability += pattern_probability(name=name, hanako=0, hoshino=1, mika=0, himari=1, ako=0, per=per) * 4

    name = '水着ホシノが2回、ミカが1回、またはその逆:水着ハナコいるバージョン'
    probability += pattern_probability(name=name, hanako=1, hoshino=2, mika=1, himari=1, ako=1, per=per) * 2

    name = '[水着ホシノが2回、ミカが1回、ヒマリまたはアコなし]またはその逆:水着ハナコいるバージョン'
    probability += pattern_probability(name=name, hanako=1, hoshino=2, mika=1, himari=1, ako=0, per=per) * 4

    name = '[水着ホシノが2回、ミカが1回、ヒマリ・アコなし]またはその逆:水着ハナコいるバージョン'
    probability += pattern_probability(name=name, hanako=1, hoshino=2, mika=1, himari=0, ako=0, per=per) * 2

    name = '水着ホシノが2回、ミカが1回、またはその逆:水着ハナコいないバージョン'
    probability += pattern_probability(name=name, hanako=0, hoshino=2, mika=1, himari=1, ako=1, per=per) * 2

    name = '[水着ホシノが2回、ミカが1回、ヒマリまたはアコなし]またはその逆:水着ハナコいないバージョン'
    probability += pattern_probability(name=name, hanako=0, hoshino=2, mika=1, himari=1, ako=0, per=per) * 4

    name = '[水着ホシノが2回、ミカが1回、ヒマリ・アコなし]またはその逆:水着ハナコいないバージョン'
    probability += pattern_probability(name=name, hanako=0, hoshino=2, mika=1, himari=0, ako=0, per=per) * 2

    print(f'{per}連で望みが叶う確率 = {round(probability * 100, 4)}%')

    return math.floor(1 / probability)


expected = goal(per=45)

print(f'推定チュートリアル回数 = {expected}')

※引数に水着ハナコを入れていますが、実際は最終的な計算結果に影響を与えてない。

結果発表:1回のチュートリアルで40連やり続ける場合、理想形を手にするまでに必要なチュートリアルはおそらく44回

5人全員くる = 0.0001%
ヒマリまたはアコがこない = 0.0051%
水着ホシノとミカはくる、ヒマリとアコはこない = 0.2523%
水着ハナコがこない = 0.0004%
水着ハナコがこない、ヒマリまたはアコがこない = 0.0196%
水着ハナコ、ヒマリ、アコがこない = 0.9385%
水着ホシノまたはミカがこない→絶対ヒマリまたはアコは必要:水着ハナコいるバージョン = 0.0457%
水着ホシノまたはミカがこない→絶対ヒマリまたはアコは必要:水着ハナコいないバージョン = 0.1699%
水着ホシノが2回、ミカが1回、またはその逆:水着ハナコいるバージョン = 0.0%
[水着ホシノが2回、ミカが1回、ヒマリまたはアコなし]またはその逆:水着ハナコいるバージョン = 0.0003%
[水着ホシノが2回、ミカが1回、ヒマリ・アコなし]またはその逆:水着ハナコいるバージョン = 0.0142%
水着ホシノが2回、ミカが1回、またはその逆:水着ハナコいないバージョン = 0.0%
[水着ホシノが2回、ミカが1回、ヒマリまたはアコなし]またはその逆:水着ハナコいないバージョン = 0.0011%
[水着ホシノが2回、ミカが1回、ヒマリ・アコなし]またはその逆:水着ハナコいないバージョン = 0.0541%
40連で望みが叶う確率 = 2.2452%
推定チュートリアル回数 = 44

44回か…。1回のチュートリアルで15分くらいかかるから、11時間くらいかかることになる…。

微妙…。やれそうだし、無理そうだし、なんとも言えない絶妙な期待値。

確率が上ぶれたら30回のチュートリアルでも理想形がきそう。下ぶれたら100回いきそう。きつい。

ちなみに40連を50連にした結果はこちら:

50連で望みが叶う確率 = 3.427%
推定チュートリアル回数 = 29

追記

リセマラを始めてあれだけど、なんか45回できそうなんだよね。チュートリアル1回あたり水着ハナコガチャを45回やったら期待値がどれだけ変わるか。

45連で望みが叶う確率 = 2.8104%
推定チュートリアル回数 = 35

40連から50連にかけて理想形のくる確率が大幅に上昇している。2.2から3.4ってすごい。あの水色の石は限界まで使ったほうが良さそう。

わかったこと:40連ぜんぜんダメでも石は限界まで使おう。40連から50連にかけて確率が大幅に上がっているから。

次の記事

ブルーアーカイブ