存在しない beatmania IIDX の当たり待ちについて

この記事は CCS †裏† Advent Calendar 2021 の9日目の記事として作成されました。

adventar.org

前日の記事はくうらんくんのCHUNITHM曲紹介記事です。

note.com

解釈一致。





はじめにこの記事について、タイトルに beatmania IIDX と書いてますが音ゲーあんまり関係ないです。



beatmania IIDX、通称「弐寺」は、音ゲーの祖ともいえる伝統ある音楽ゲームです。7個の鍵盤と1つのスクラッチ(皿)をタイミングよく操作します。

beatmania IIDX には RANDOM、通称「」と呼ばれるオプションがあります。これはスクラッチを除いた7つのレーンをランダムに入れ替えるもので、運が良ければ正規譜面より押しやすい配置を引き当てることができます。

f:id:null_mn:20211205195429p:plain
DENIM[A] 正規
f:id:null_mn:20211209142656p:plain
DENIM[A] 乱当たり

(追記:逆割れになってたので画像差し替えました)

さらに最新作の CAST HOUR ではランダム配置を事前に引けるガチャが実装され、よりランダムの価値が高まりました。





そこで今回は、 beatmania IIDX 、及び beatmania IIDX ではない何かのランダム事情を考察していきます。





なお弐寺のランダムオプションは同様に確からしくない可能性を示した調査もありますが、この記事では譜面の排出は同様に確からしい、つまり全てのパターンが等確率で排出されるものとします。

beatmania IIDX の鍵盤が増えた場合

現在の beatmania IIDX の鍵盤は7個ですが、昔の初代 beatmania では5個しかありませんでした。

よって今後もっと鍵盤の多い beatmania が稼働する可能性も0ではありません。そんなわけないだろ



そこで、 n 個の鍵盤を持つ beatmania でのランダムの分布について考えてみましょう。

f:id:null_mn:20211208022832j:plain
n=21

なお本家に従って  n は奇数とします。


ガチ割れ

ガチ割れとは、冒頭の DENIM[A] のように左右に鍵盤が分かれる譜面を指します。

今回は、例えば 3517264 のようにレーンが奇数レーンと偶数レーンに完全に分かれているもののみをガチ割れと定義します。奇数レーンと偶数レーンの順番が逆でもよいです。

ガチ割れのパターン数は奇数レーン  \dfrac{n+1}{2} 個と偶数レーン   \dfrac{n-1}{2} 個を両端に並べる場合の数であるから、 2 \left( \dfrac{n+1}{2} \right) ! \left( \dfrac{n-1}{2} \right) ! 通りです。

よってガチ割れを引く確率は

 \dfrac{  2 \left( \dfrac{n+1}{2} \right) ! \left( \dfrac{n-1}{2} \right) !   }{n!}

です。



具体的な  n についてのガチ割れ確率は次のようになります。

n ガチ割れ確率(概数)
5 0.2
7 0.05714
9 0.01587
11 0004329
13 0.001166
15 0.0003108

鍵盤の数が増えれば増えるほどガチ割れは引きにくくなることが読み取れます。ポップンでガチ割れを引くのは大変らしい。

なお、上の表からもわかる通り  n \rightarrow \infty としたときのガチ割れ確率は0に収束します(スターリングの近似を用いると示せます)。


S 乱当たり

弐寺には、通常の RANDOM オプションの他に S-RANDOM と呼ばれるオプションがあります。

これはレーンを入れ替えるのではなく、1つ1つのノーツごとに独立にどのレーンに降ってくるかを決めるというものです。

勿論これを用いることで押しやすくなる譜面もありますが、一般には縦連が多くなり押しにくくなります。



……ですが、鍵盤の数がめちゃくちゃ多い場合にはどうなるでしょうか?

f:id:null_mn:20211208024122j:plain
デカい

簡単のため譜面に同時押しはないものとし(鍵盤の数がめちゃくちゃ多い場合、遠すぎると無理押しになるため)(?)、ノーツ数は m とします。

縦連が生じる回数の期待値を求めてみましょう。

期待値の線形性から、i ノーツ目と i+1 ノーツ目が同じレーンにある確率を p とすると、求める期待値は  (m-1)p です。

同時押しがないという仮定から p = \dfrac{1}{n} であり、縦連の個数の期待値は  \dfrac{m-1}{n} であるとわかりました。



通常の弐寺では  n \ll m であるため縦連の回数の期待値はかなり大きくなります。

しかし鍵盤の個数がノーツ数より多い弐寺においては、縦連の個数の期待値は1未満になります。鍵盤の個数が増えるとS乱がお得ということですね。

ちなみに  n \sim m-1 のとき、縦連が1個も存在しない確率は  \left( 1 - \dfrac{1}{n} \right) ^ {m-1} \sim \dfrac{1}{e} です。綺麗です。


皿の上に鍵盤が配置されている場合

KONAMIがトチ狂って皿の上に鍵盤がついた新作 beatmania を発表したとします。

f:id:null_mn:20211208024811j:plain

この場合皿を回転させることで配置をある程度変更できるので、皿の回転によって一致する譜面は同一視してよいです。

よってあり得る譜面の数は  (n-1)! 通りです。(1鍵を固定して考えるとわかりやすい)

ランダム譜面の生成は (n-1)! 通りの譜面の中から一様ランダムに選ぶものとします。

ガチ割れ

1鍵を時計の0時の位置に固定して考えます。

ガチ割れ(のような何か)になるのは左右に奇数レーン偶数レーンが分かれるときで、順番も考慮すると 2 \left( \left( \dfrac{n-1}{2} \right) ! \right) ^2 通りです。

よってガチ割れ確率は

 \dfrac{2 \left( \left( \dfrac{n-1}{2} \right) ! \right) ^2}{(n-1)!}

です。

これは先程の鍵盤が増えた場合で  n を偶数とした結果と一致しますね。

これも n \rightarrow \infty とすると確率は0に収束します。


beatmania ∞DX

3021年に登場した無寺(beatmania ∞DXのことです)では、なんと鍵盤の数が無限個になりました。

f:id:null_mn:20211208025244j:plain

(STARTボタンは無限遠にあります。悲しいね)

このゲームにおける RANDOM の分布について考えていきましょう。

無限個のものからランダムに選ぶ場合、通常の意味での確率を定義することはできません。そこで確率を確率空間として再定義します。

確率空間は (\Omega, \mathcal{F}, P) の3つ組で、以下を満たすものです。

  •  (\Omega, \mathcal{F}) は可測空間*1。つまり、 \mathcal{F} \Omega 上の完全加法族。
  •  P: \mathcal{F} \rightarrow [ 0,1 ] は確率関数で、以下を満たす。
    •  P(\Omega) = 1,\ P(\emptyset) = 0
    • どの2つも共通部分を持たない集合列  A_1, A_2, \dots \in \mathcal{F} に対し  P( \bigcup_{i=1}^{\infty} A_i) = \sum_{i=1}^{\infty} P(A_i) (可算加法性)

なお、 \mathcal{F} \Omega 上の完全加法族であることの定義は以下です。

  • \mathcal{F} \subseteq 2^{\Omega}
  •  \mathcal{F} \neq \emptyset
  •  \mathcal{F} は補集合及び可算合併について閉じている。

定義だけ見るとゴツいですが、これは事象が有限である通常の確率の自然な拡張です。

通常の弐寺のランダムを例に挙げると、 \Omega は7つのレーンの並べ替え、 \mathcal{F} は並べ替えの集合を全て集めた集合(つまり 2^{\Omega} 。例えばガチ割れや2356は  \mathcal{F} の要素)、P P(A) = |A| / 7! \ (A \in \mathcal{F}) で定義される関数です。これが確率空間の公理を満たすことは容易に確かめられます。

(これだけ見ると「\mathcal{F} 要らなくね?別に 2^{\Omega} で良いじゃん」と思うかもしれませんが、 \Omega が非可算無限集合である場合におかしなことが起きます。詳しくは省略)



さて、これを(可算)無限個の鍵盤を持つ弐寺について適用しましょう。



無限個のものの置換全体の集合は  S_1,S_2,\dots の合併、つまり  S_{\infty} := \bigcup_{i=1}^{\infty} S_i で定義します(無限対称群と呼ばれます)。ここで S_nn 次対称群(n 個のものの並べ替え全体のなす群)です。ただし群の構造は忘れて単なる集合とします。S_iS_j \ (i < j) の部分集合と見なせることに注意しましょう。

S_{\infty} は可算無限個の有限集合の合併であるので可算集合です。可算集合の冪集合は完全加法族の公理を満たすため、  (S_{\infty}, 2^{S_{\infty}}) は可測空間です。



問題は確率関数 P ですが、同様に確からしいという条件があるので、以下を満たすような P を採用したいです。

  • 任意の  \sigma, \sigma ' \in S_{\infty} に対し、 P(\{ \sigma \}) = P(\{ \sigma ' \})







……結論から言うと、このような P は存在しません。

つまり、無限個の鍵盤を持つ弐寺にランダムを実装することはできません。



以下に理由を述べます。

 S_{\infty}可算集合であるので、 S_{\infty} = \{ \sigma_1, \sigma_2, \dots \} と添え字をつけて外延的に表すことができます。

 A_i := \{ \sigma _{i} \} \ (i = 1,2,\dots) としましょう。

確率関数の可算加法性より  P( \bigcup_{i=1}^{\infty} A_i) = \sum_{i=1}^{\infty} P(A_i) が成り立ちます。
さらに  \bigcup_{i=1}^{\infty} A_i = S_{\infty} であるので、 P(S_{\infty}) = 1 と合わせると  \sum_{i=1}^{\infty} P(A_i) = 1 です。

ここで、無限級数の収束の必要条件から  \lim_{i \rightarrow \infty} P(A_i) = 0 です。

同様に確からしいという条件から  P(A_1) = P(A_2) = \dots = 0 となりますが、これは  \sum_{i=1}^{\infty} P(A_i) = 1 に矛盾します。

よって条件を満たす確率関数  P は存在しません。

(同様の議論を  \Omega = \mathbb{N} で行うことで、S乱やR乱が実装できないことも示せます。)



なお、同様に確からしいという条件を外せばランダムを実装することができます。例えば  P(\{ \sigma _i\}) = 2^{-i} とすればこれは確率関数の公理を満たします。

冒頭で弐寺のランダムは同様に確からしくないかもしれないという話をしましたが、あれは鍵盤の数を無限に増やすための伏線らしいです。知らんけど。


真・beatmania ∞DX

最後に、鍵盤が非可算無限個ある beatmania を考えます。

f:id:null_mn:20211208030124j:plain

鍵盤(?)は \mathbb{R} 上の閉区間  [ 0,1 ] として表されるものとします。CHUNITHM か?

RANDOM についてはよくわからなかった(レーンの入れ替わりを  [ 0,1 ] の自己同型写像としてみれば定義できる?)ので S乱だけを扱います。

可算無限の場合にS乱が定義できなかったので非可算無限なら尚更無理では?と思うかもしれませんが、なんとできます区間有界なのがポイント。

先程同様譜面のパターンが有限ではないので確率空間を考えることになりますが、書くのがめんどくなってきたので詳しくは省略します

(参考:連続一様分布 - Wikipedia

なお、区間有界でない場合は定義できません。

確率密度関数は知っている人も多いと思いますが、その背景に測度論があるというのは興味深いですね。



このときS乱をかける前とかけた後でノーツの位置が変わる確率は  1 です。つまりS乱をかけることで(文字通り)無限のバリエーションを楽しむことができます。夢があるなぁ

ちなみに人間の指は有限本しかありませんが、適当に押した点とノーツが重なる確率は 0 なので、どう頑張ってもノーツは拾えません。お疲れ様でした。


おわりに

何言ってんだこいつ


*1:可測空間!?!?!?(「く」が……)