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

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

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

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

擬似乱数について

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

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

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

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

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

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

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

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

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

運営サイドの問題

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

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

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

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

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

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

参考

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

Wikipedia – 乱数列

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

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

2件のコメント

  1. いまどきseedを時間から生成していたら、担当者に速攻でダメ出ししますね。
    seedの値は/dev/randomから取れ、というか、最近のスクリプト言語はseed指定しなくてもよろしく取り計らってくれたりするので、なにもしないのが正解だったりする。

    あと、よく見る間違いは乱数生成するたびにseed値セットするやつね。\
    これにseedを時間から生成が組み合わさると目にも当てられないことになる。
    つーか、そんな現場をかつて目撃したw

    > ガチャプログラムをシード生成の部分を伏せた上で公開する
    気持ちはわかるんだけど、
    どーせ疑ってるやつは「実際に動いているコードがそれと一致している証明ができない」とか難癖つけるので、
    正直相手にしないのが一番。
    ノイジーマイノリティーとして無視ですね、現実は。

  2. 実際に完全にガチャの確率が独立していたら、大抵の人は辞めちゃうと思うなあ。運営はそれでは困るから、ある程度外れ続けている人には救済的に確率を上げるってのはやっている気がします。じゃないと100回や200回なんて少ない数で排出確率に近づくなんて上手すぎる気がするし。

コメントを残す

メールアドレスが公開されることはありません。