ガチャの確率の偏りと擬似乱数

先日、TL上に流れてきた以下の記事を読みました。

フレポガチャを使って星5サーヴァント排出率2%を超える調整法

個人的にはありえない話だと言いたいのですが、ガチャのプログラムに問題があれば、当該記事のやり方で確率が上がるかもしれません。可能性は非常に低いと思いますが。

擬似乱数について

当該記事で展開されている理論の核としては、☆5鯖相当の確率(1%)を暫く引けていないとき、確率の偏りが発生しているので☆5鯖を引きやすい状態である、ということですが、これはいわゆるギャンブラーの誤謬というやつです。

カイジに学ぶ – ギャンブラーの誤謬

コイン投げやサイコロは独立事象であり、前回の結果によって次の確率が変わるということはありません。問題は、ガチャの結果が独立事象であるかということです。

コンピュータ上で、ランダムな事象を判定する場合には、擬似乱数を用います。擬似乱数というのは、文字が表す通り擬似的な乱数であり二つの重要な指標があります。「一様性」「独立性」です。一様性というのは、全ての乱数が均等に出現することで、独立性は直前に出た値とその後に出る値は関係がないというものです。ガチャの結果が独立事象になるためには、生成される擬似乱数の「独立性」が確保されていることが条件になります。

擬似乱数の生成をやらかしてしまうと、これらの性質が確保できません。実際に、やらかしてしまったゲームもあります。

カルドセプトサーガの乱数問題

擬似乱数の生成手法はいくつかありますが、有名なものは線形合同法メルセンヌツイスタでしょう。近年専ら使われるのはメルセンヌツイスタで、本手法で作られた擬似乱数は、「一様性」「独立性」を十分にクリアする、質の高い乱数になります。

一番最初にガチャプログラムに問題がある可能性が低いと述べたのは、多くのプログラミング言語でメルセンヌツイスタによる乱数生成が標準ライブラリとして実装されているからです。

ちなみに、擬似乱数を生成する時、乱数生成に必要なデータをシードとして与えます。このシード値が同じであれば、生成される乱数は同じになります。シード値は現在時間で初期化されることが多く、ゲームの乱数調整で起動後○秒とかが出てくるのは、シード値を合わせて、擬似乱数のパターンを再現しようという手法になります。

運営サイドの問題

現状、各社が提供しているガチャは、確率は載せていても本当にその確率で出現するかは保障されていません。ユーザーによってガチャ確率を変えているのでは?という話もたまに聞きますし、ここらへんはオープンにすべきじゃないですかね。

一番良いのは、ガチャプログラムをシード生成の部分を伏せた上で公開することだと思います。シード値がわからなければどのような順序で乱数が出てくるかわかりませんので、直前のガチャ結果からその後の結果を予測することは不可能です。

ネット麻雀サービスで著名な天鳳は、配牌プログラムを以下のように公開しています。

天鳳 – 牌山生成の公開方法

どうやってガチャの判定をしているかわからない以上、ガチャ結果が独立事象ではないと言われても否定はできません。つまり、オカルト的なガチャ調整法も効果があるかもしれません。

ただ、仮に自分がガチャプログラムを実装するならば、ガチャのリクエストが来るたびに、メルセンヌツイスタで生成された擬似乱数に応じて結果を決めるプログラムを作ります。膨大なお金が動くであろうガチャが、前回のガチャ結果から次のガチャ結果が予測できるような杜撰な実装であってほしくはないです。

参考

Algorithm with Python – 番外編:擬似乱数の検定

Wikipedia – 乱数列

Wikipedia – メルセンヌ・ツイスタ

あなたの使っている乱数、大丈夫?-危ない標準乱数と、メルセンヌ・ツイスター開発秘話-

グラブル最適編成計算機 今後について

しばらくグラブル自体、あまりモチベーションが無くて充電期間だったのですが、ちょっとモチベーションが戻ってきたのでぼちぼち復活してます。
計算機の更新については、未だに保留状態です。有志の方に更新していただいていますので、そちらをご利用いただければと思います。


計算機の更新については、いろいろ思うことがあるのですが、現状のグラブルの環境を考えると、最近の追加武器や、背水技巧二手三手スキル、キャラLBの存在、ソーン麻痺などなど、利用環境に応じて編成を変えるケースが増えていると思います。

それに伴って、’最適な’編成ってなんだろう?っていうのが大きくなっています。何処で使うのか、誰を想定敵にするのか、自分のバフ回しはどうなのか、奥義は打つのかなどなど…… 編成の最適化は行動の最適化とセットです。DPSに着眼するならアビリティの演出時間やリロード時間も考えなきゃいけないですし、さらに変数が増えてしまいます。

正直、いろいろ積まれすぎてお手上げ状態になってます。各属性、概ね理想的な編成はここらへんだろうというのは調べれば出てきますし、現在の状況で計算機を使う『手間』に対してのリターンは提供できないかなぁと。

あと、やっぱり自分の武器編成が固定化されてしまっているというのが大きいです。基本的に、今までは自分で使うことをモチベーションに作ってきたので、自分が使わないものを更新するというのはやる気が起きないのです。大変申し訳ないのですが。

また、Googleの仕様変更により、計算機の利用がかなり面倒になったというのも大きいです。こちらは、時間を置けば解消される問題かと思いますが、日本国内でのGoogle Apps Scriptのサポート状況は一概にもいいとは言えないので、時間はそれなりにかかるかもしれません。

GAS で「一部のスコープへのアクセス権限がありません」と怒られたときの対処法

計算機の更新は当面やりませんが、グラブルで面白いことがあれば検証系の記事は出すかもしれません。

それでは!

グラブル 最適編成計算機 4.0 更新予定の内容

ご無沙汰してます。近況は、古戦場期間中ですが現状はなんとかマッチングに恵まれていて、ヘイロー回して十天衆の最終開放の依り代集めに労力が割けている感じです。グラブルへのモチベーション今かなり高いですよ!

さて、計算機の更新内容ですが、そろそろ固まってきたので軽く紹介します。

  • 天司武器スキルへの対応
  • コード最適化を含む計算式の見直し(ダメージ上限考慮、追加ダメージバフなど)
  • 背水を加味した攻撃力の最適化
  • キャラのカスタマイズ機能(リミットボーナス、サポートアビリティの設定)
  • バフ設定機能の強化(二手三手など)とキャラ個別のバフ設定

内容的には、キャラの手持ち管理を兼ねてリミットボーナスを加味した最適化ができるあたりを目指したいです。リミットボーナス仮振りの比較とかもできるようにしたいなあとかいろいろ考えてはいます。また強力なバフが登場してきた現状では、バフ込みでの最適化を行ったほうがよいと思いましたので、バフ設定機能を大幅に強化させます。追加ダメージとかそこらへんですね。

そのため、各種検証情報とかをチェックして纏めたりとかする必要があるので、かなり時間はかかりそうです。また、ベースのコードから大分付け足しでやっていたので、コードを見直したいというのがあります。これにもかなりの労力が必要っぽいです。

恐らく来月も古戦場があると思いますので、4月中旬のリリースを目標にしたいなあとか考えてます。まぁ、趣味でやっているものですので、気長にお待ちいただければ。また、更新作業についてもたまーにこんな感じでブログ書こうかなぁと。

グラブル 最適編成計算機 Ver 3.2.4 アップデート

グラブル 最適編成計算機


更新です。ゼノイフリート武器への対応が主となります。

最近、EX枠の武器が増えてきたため、従来のスキル名対応が難しくなってしまいました。そこで、今後追加されるEX枠の武器は「エクストラ・ATK ○○」というスキル名にするようにしました。

今回のゼノイフリートの「六道・灼滅天の刃鎌」は、「エクストラ・ATK IIII」となっています。主に以下の表の対応となっています。

スキル名 Slv1 Slv10 Slv15 同等のスキル 備考
エクストラ・ATK I 3% 12% 14% 攻刃・中 コラボSR武器
エクストラ・ATK II 6% 15% 18% 攻刃・大 通常のEX武器
エクストラ・ATK III 7% 16% 20% 攻刃・大 II 該当Ex武器無し
エクストラ・ATK IIII 9% 18% 23% 六道武器

半額開始メモ

APBP半額きちゃいましたねー。現状の手持ちとかをメモ。

20161121_status

現在のステータスはこんなとこ。今回は共闘メインで籠ろうかなーと。Rank155でHPupのゼニスは間違いなく取るとして、EXの素材集めとか必要な分は今回である程度確保しにいきます。

マルチは、粉種がそこまで回復してないからなぁ……。マグナ救援MVPで赤箱狙う方向になるかと。