新着情報

新着・更新情報などをご案内します

ゲームの疑似乱数と数学の関係

2021年11月13日

みなさんはゲームしますか?コロナ蔓延防止として家にいることが多くなり、ゲームをする頻度が増えた家庭も多いかと思われます。そこでよく耳にするのがガチャです。実はこのガチャシステム、乱数調整ができれば激レアキャラを一発で引くことができます。今日はこの乱数と生成方法について簡単に紹介します。

 

乱数とは

 

では「乱数調整」の乱数とはなんでしょうか。例えばさいころを投げるとき、何の目が出るかは完全に運(ランダム)です。いま私の手元にあるさいころを18回投げてみます。すると以下の結果になりました。

6 3 2 4 3 1 4 5 3 5 3 3 4 2 4 1 3 5

この18回だけを見ると3が異様に多いことや、規則が無いことわかります。このような完全にランダムな0から9までの数字の配列を乱数といいます。しかしこの乱数、アナログの世界では簡単に出せるのですが、コンピューターの世界では非常に難しいのです。この乱数を数学の力を使って疑似的に表したものを疑似乱数といい、この疑似乱数を使ってガチャなどの確率を調整しています。

 

疑似乱数を生成する仕組み

 

例えばan+1=2an+11という漸化式があるとします。これは1つ前の数字を2倍して11たすという意味で、高校二年生の数学Ⅱで習う内容です。例えば最初の値を5とします。すると、2×5+11=21となり、さらに2×21+11=53、2×53+11=117…となります。実際に計算すると以下のようになります。

5  21  53  117  245  501  1013  2037  4085  8181 …

しかしこれでは無限に数字が増えてしまいます。そこで19未満という制限を設けるために19で割った余りを考えてみます。すると

5  2  15  3  17  7  6  4  0  11  14  1  13  18  9  10  12  16

という、不規則な数字の並びになります。この数字の並びが疑似乱数です。(ただしこの疑似乱数の場合8は出ません)

この疑似乱数からさらに「0~2だったら1」「3~5だったら2」「6~9だったら3」「10~12だったら4」「13~15だったら5」「16~18だったら6」とプログラムすると

2 1 5 2 6 3 3 2 1 4 5 1 5 6 3 4 4 6

となり、疑似的にサイコロを作ることもできます。アナログのときの乱数とは違い、どの目も確率1/6になっています。

 

疑似乱数の欠点

 

先ほどの疑似乱数、実は

5  2  15  3  17  7  6  4  0  11  14  1  13  18  9  10  12  16 5  2  15  3  17  7  6  4  …

となっており、19番目からまた5 2 15 となっています。Nintendo DS、3DS、ゲームボーイアドバンス等ではこのようにループする乱数を使っているため、日付を調整したり、ゲームを起動した瞬間に時間を測ったりすると簡単に乱数調整ができてしまいます。また、このループをガチャに使用し、解析されて炎上したアプリもあります。これらを避けるため、最近のゲームやアプリではもっと複雑な式やアルゴリズムを使うことで解析されにくくなっています。

 

他にもいろいろな乱数生成方法がある

 

今日紹介したのはいわゆる線形合同法といわれる乱数生成方法です。この乱数を1秒間に60個生成し、ループさせているゲームが多いです。その1/60秒を調整すること、つまり乱数調整することで激レアキャラを手に入れることができます。昔のゲームはスペックも低いため容易ですが、最近のゲームやスマホアプリでは改造でもしない限りはほぼ不可能となっています。もちろん改造は利用規約違反ですので、絶対に行わないでください。

この他にもいろいろな乱数生成方法があります。興味のある方は調べたり、自分で乱数を生成して遊んでみたりしましょう。

 

(山梨市駅前校 R・G)

無料体験指導

無料教育相談