ガチャで複数人が欲しい時の確率

ガチャで複数人が欲しい時に確率が気になったけど計算式がよくわからなくなった時に見るもの

事前準備

github上で見る場合、これをインストールしておいた方が良いかと思われます

https://github.com/AaronCQL/katex-github-chrome-extension

ガチャx連で確率yで出るSSRをzつ欲しい!

みなさんガチャ引いてますか?いわゆるソシャゲと言われるグラブル、FGO、デレステ、ラフェス、プリコネ、Nier、ウマ娘のようなゲームではもちろん、コンシューマー系でもモンハン、ゴーストオブツシマ、Bloodborneなどなど、あらゆるゲームにおいて確率とはバトルする羽目になります。というか確率とバトルしなくていいゲームはマリオとカービィぐらいしかぱっと思いつきません。

そんな確率と常日頃からバトルしてる皆さんには常識だと思われますが、100連で1%を1回以上つかみとれる確率は60%ちょいです。

では2回以上引ける確率はどうでしょう。ここで、当然25%ぐらいやろって言える方にはこの記事は要らないので他の記事を見に行きましょう。

SSRを2回引ける確率は、全ての確率(=1)から、SSRを0回引く確率と1回引く確率を引けば出ます。

P(SSR2)=1P(SSR0)P(SSR1)

P(SSR0)というのは、99%を100回連続で引き当てる確率に相当します。なので、

P(SSR0)=0.991000.37

SSRを1回以上引く確率が60%ちょいというのは、SSRを0回引く確率を1から引いてでてきてるわけですね。

P(SSR1)=1P(SSR0)10.37=0.63

P(SSR1)というのは、99%を99回引き当てる確率をと1%を1回引き当てる確率に相当します。1%を1回引くのは100回ガチャを引く中のどこか1回で良いので、100C1の場合も考えてあげる必要がありますね。なので、

P(SSR1)=100C10.0110.99990.37

よって、

P(SSR2)=1P(SSR0)P(SSR1)10.370.37=0.26

となります。25%ぐらいですね。3回以上になれば今度はさらにSSRを2回引く確率を更に引けば値が出ます。

P(SSR3)=1P(SSR0)P(SSR1)P(SSR2)=10.99100100C10.0110.9999100C20.0120.999810.370.370.18=0.06

ここまでくれば規則性見えましたね。きちんと立式化すると以下になります。

P(xySSRz)=1i=0z1xCiyi(1y)xi

ガチャx連で確率ai%で出るSSRをそれぞれ1つ以上欲しい!

みなさん嫌いなものありますか?私の嫌いなものの一つに複数人ピックアップガチャや限定闇鍋ガチャというものがあります。「同時にピックアップをするな。hogeは欲しいけどfugaはそこまで欲しいわけじゃねえんだよ」ってなります。限定闇鍋ガチャなんか最悪ですね。「期間限定のhogeとfugaが欲しい。いや別に他のカードも欲しくないわけじゃないけれど、hogeとfugaが欲しいんだよな」ってなります。

後はリセマラしてるときにもなりますよね。「hogeとfugaは最低限ほしい」って。

hogeが1%、fugaが2%の確率で出るとして、また100連しましょうか。この時知りたい確率は次になります。

P(hoge1fuga1)

真ん中のは「かつ」という意味です。「hogeを1回以上引く、かつ、fugaを1回以上引く」確率を求めたいわけですね。なお、次に出てきますが、は「または」の意味です。

「hogeを1回以上引く」の逆(正確に言うと否定であって逆ではないですが)は「hogeを1回以上引かない」、つまりは「hogeを0回引く」ということになります。つまり、

P(hoge1¯)=P(hoge1)=P(hoge0)

これでピースは揃いましたかね。

P(hoge1fuga1)=1P(hoge1fuga1¯)=1P(hoge1¯fuga1¯)(1)=1{P(hoge1¯)+P(fuga1¯)P(hoge1¯fuga1¯)}=1{P(hoge1)+P(fuga1)P(hoge1fuga1)}=1{P(hoge0)+P(fuga0)P(hoge0fuga0)}=1{(10.01)100+(10.02)100(10.010.02)100}=1{0.99100+0.981000.97100}1{0.37+0.130.05}=10.45=0.55

(※注1 ド・モルガンの法則)

となって、55%でhogeを1回以上、fugaを1回以上引けそうですね。

では3つになるとどうなるでしょうか。「hogeを1回以上引く、かつ、fugaを1回以上引く、かつ、piyoを1回以上引く」確率ですね。それぞれ長いので以下のように置き換えます

すると、次のような式になります。

P(hoge1fuga1piyo1)=P(ABC)=1P(ABC¯)=1P(A¯BC¯)=1{P(A¯)+P(BC¯)P(A¯BC¯)}=1{P(A¯)+(P(B¯C¯))(P(A¯(B¯C¯)))}=1{P(A¯)+(P(B¯)+P(C¯)P(B¯C¯))(P((A¯B¯)(A¯C¯)))}=1{P(A¯)+P(B¯)+P(C¯)P(B¯C¯)(P(A¯B¯)+P(A¯C¯)P((A¯B¯)(A¯C¯)))}=1{P(A¯)+P(B¯)+P(C¯)P(B¯C¯)(P(A¯B¯)+P(A¯C¯)P(A¯B¯A¯C¯))}=1{P(A¯)+P(B¯)+P(C¯)P(B¯C¯)P(A¯B¯)+P(A¯C¯)+P(A¯B¯C¯)}=1{(10.01)100+(10.02)100+(10.03)100(10.020.03)100(10.010.02)100(10.010.03)100+(10.010.020.03)100}=1{0.99100+0.98100+0.971000.951000.971000.96100+0.94100}1{0.37+0.13+0.050.010.050.02+0.00}=10.47=0.53

となり、53%の確率で目標を達成できそうです。問題なのは、式がこの調子で複雑になると、5つぐらいでもう人間が計算する領域ではなくなり始めますね。定式化すると以下になります

P(xaiSSR1)=1i=1N(1ai)x+i=1N1j=i+1N(1aiaj)xi=1N2j=i+1N1k=j+1N(1aiajak)x+i=1N3j=i+1N2k=j+1N1l=k+1N(1aiajakal)x

なんかいまいち綺麗な式にならない……

ガチャx連で確率aiで出るSSRをそれぞれbi人以上欲しい!

複合です。いわゆるN凸を複数したいときにする計算になりますね。お前のことだよシャニマス、ウマ娘。

これは複雑そうに見えてそうでもありません。今までの複合でできるからですね。

まず欲しいSSRが1つの場合を考えます。これは最初のガチャx連で確率yで出るSSRをz人欲しい!と同じものですね。

P(xa1SSRb1)==1i=0b11xCia1i(1a1)xi

2つの場合も考えましょう。

P(xa1SSRb1xa2SSRb2)=1P(xa1SSRb1xa2SSRb2¯)=1{P(xa1SSRb1¯)P(xa2SSRb2¯)}=1{P(xa1SSRb1¯)+P(xa2SSRb2¯)P(xa1SSRb1¯xa2SSRb2¯)}=1{i=0b11xCia1i(1ai)xi+i=0b21xCia2i(1a2)xii=0b11j=0b21xCia1ixiCja2j(1a1a2)xij}

一気にバチくそ面倒になりましたね。これが3つ4つと増えていくと、ガチャx連で確率a_iで出るssrをそれぞれ1つ以上欲しいと同じように複雑になっていきます。計算どころか立式すらしたくなくなってきます。

定式化すると以下のようになります

P(xaiSSRbi)=1i=1N{p=0bi1xCpaip(1ai)xp}+i=1N1j=1N{p=0bi1q=0bj1xCpaipxpCqajq(1aiaj)xpq}i=1N2j=1N1k=1N{p=0bi1q=0bj1r=0bk1xCpaipxpCqajqxpqCrakr(1aiajak)xpqr}+

計算したくない……

終わりに

改めて確率を計算しようとしたときに一瞬考えてしまったので備忘録的に書きました。間違っていましたら教えていただけると幸いです。

全部見るトップへ戻る底へ移る