ランダムガチャには偏りが出る事を視覚化してみる
説明
ガチャで悪い結果が出ると、すぐに「テーブル」「確率操作」といった単語を持ち出す人を見かけますが、ランダム(正確には擬似乱数ですが)でも、人によってガチャの結果は偏る…むしろランダムだからこそ偏るという事を、グラフを使い視覚化するためのツールです。
- シミュレートに用いる擬似乱数列生成器には、古くからよく知られるメルセンヌ・ツイスターを利用しています。
- 理論値の計算には、二項分布の確率密度関数 \(f\left( x\right) =\begin{pmatrix} n \\ x \end{pmatrix}p^{x}(1-p)^{n-x}\) を利用しています。
つまり、自分1人のガチャの結果が公表値の通りになってないと主張しても、それが不正であることの証明にはならないという事になります。
不正を証明したい場合は、SNSなどを活用し、たくさんの人とガチャの結果を比較し合うと良いと思います。もしその比較の中で、全く同じ当たりハズレのパターンが頻出した場合、何かがおかしいかも?と言える事になります。実際、過去の不正はそうやって見つかったものです。
なお、完全なランダムにしてしまうと、極端に運が悪い人は、1000回引いてもお目当てのものが引けないなんて事が起こり得ます。テーブル制では、そういう極端に運が悪い人が出ないようにする事も可能です。テーブル制は必ずしも悪とは言えないという事になります。
人間の感覚や体感はかなりデタラメ
プログラマ向けの補足
- 計算部分はPHPで書いていますが、利用している無料レンタルサーバのPHPのバージョンが作成時点では「7.1.2」で、二項係数の計算のための組み込み関数などがなかったため、自前で実装しています。PHP7.3からは、gmp_binomial() のような組み込み関数が用意されています。
- 疑似乱数生成には mt_rand() を使っています。PHP7からは random_int() という関数も用意されていますがそれを利用していないのは、古くからよく知られる擬似乱数生成器でも、理論値に近い結果が出る事を証明するための意図的なものです。
- 擬似乱数という単語を多用していますが、これは計算だけでは真乱数を生成することはできないからです。これについて語りだすととんでもない量の文章になってしまいますので、興味がある方はこちらのサイトをご確認ください。
HOME