ORLOV ゲーム

ブログ · Brasslight Slots ·

乱数発生器がスピンごとの結果を選ぶ仕組み

コンピュータはサイコロを振ることができないため、サイコロのように振る舞う数を生成するルールに従う。シード、状態、マッピングの3つが、すべてのスピンを説明する基本概念である。

スロットのすべてのスピンの背後には、数を生成する短いコードがあり、その数がリールの停止位置を決める。この投稿では、手計算できるほど小さな玩具のような例を使い、この種の発生器が一般にどう動くかを説明する。以下の発生器は計算のために考案したものである。対象ゲームのGoogle Playのストアページでは、 Brasslight Slots そのゲームが結果をどう選ぶかは書かれていないため、ここではそのアプリのコードについては何も述べない。説明するのは標準的な方法である。

擬似乱数であり、乱数ではない

コンピュータは命令に従うので、コインを投げることはできない。できるのは 擬似乱数発生器 (PRNG)を動かすことである。これは一つの数値を次の数値へと変える固定のルールで、出力列は通常の検定ではパターンがないように見える。重要なのは3つの部分である。

  1. 状態。 抽選の間で発生器が保持する、隠れた数値。
  2. 更新ルール。 状態を進め、出力を生成する固定の計算。
  3. シード。 開始時の状態。同じシードなら、毎回同じ列になる。

シードは通常、システム時計やOSのエントロピー・プールなど予測できないものから取られるため、セッションごとに異なる位置から始まる。その後はルールが働く。

紙の上で実行できる発生器

最も古い設計の一つが線形合同法である。状態に定数を掛け、別の定数を足し、法で割った余りを取る。本例では法を16とする:

next = (5 × current + 3) mod 16

シード7から始める。すると 5 × 7 + 3 = 38、38 mod 16 = 6。次に 5 × 6 + 3 = 33、33 mod 16 = 1。そして 5 × 1 + 3 = 8。これを続けると、最初の10個の出力は 6、1、8、11、10、5、12、15、14、9 となる。この玩具では、出力は状態そのものである。

16ステップ実行すると、0から15までのすべての整数がちょうど一度ずつ現れる:6、1、8、11、10、5、12、15、14、9、0、3、2、13、4、7。17番目の出力は再び6で、列全体が繰り返される。この循環の長さが、発生器の 周期で、ここでは16である。

数値をリールの停止位置に対応付ける

発生器は数値を生成する。ゲームが必要とするのは停止位置である。前の投稿で説明したように リールストリップと停止、リールは位置のリストなので、マッピングは1ステップで済む。数値を取り、それを位置として使えばよい。

各リールに0から15まで番号の付いた16停止があるとする。すると、出力6は停止6、出力11は停止11を意味する。5リールのスピンでは、リールごとに1つずつ、5つの出力を連続して使う。シード7からの最初のスピンは、リール1〜5に対して6、1、8、11、10を使い、2回目のスピンは次の5つ、5、12、15、14、9を使う。

Spin 1 reel 1 6 reel 2 1 reel 3 8 reel 4 11 reel 5 10 Spin 2 reel 1 5 reel 2 12 reel 3 15 reel 4 14 reel 5 9 Rule: next = (5 × current + 3) mod 16, seed 7. Each output is a stop number.
シード7からの玩具発生器の最初の10個の出力を、16停止のリールの停止番号として1スピンにつき5つずつ使う。スピン1は停止6、1、8、11、10に止まり、スピン2は5、12、15、14、9に止まる。

数値が均等に割り切れないとき

実際の発生器はもっと大きな範囲を生成し、多くは32ビットである。これは232 = 4,294,967,296通りの値がある。リールが20停止であれば、一般的な近道は20で割った余りを取ることである。しかし4,294,967,296は20の倍数ではない。20 × 214,748,364 + 16 である。そのため、16の停止位置はそれぞれ214,748,365通りの生の値を得て、4つの停止位置は214,748,364通りを得る。その差は約2億1,400万分の1の値であり、影響は小さすぎるが、慎重なコードは余った値を捨てて再度抽選することで、これを取り除く。

1回のスピンが次の結果を予測しない理由

この玩具の発生器は、独立性のよいモデルとしては不十分である。出力を一つ見れば、次が確実にわかる。6の後は必ず1になる。ルールを知り、一つの数を見た者は、すべてのスピンを予測できる。また状態は16通りしかないため、生成できるスピンは16通りだけで、開始状態ごとに一つずつである。独立した16停止のリールなら、可能な組み合わせは165 = 1,048,576.

大規模で設計された発生器は、規模と設計の両方によって、この2つの問題を解決する。広く使われている汎用発生器であるメルセンヌ・ツイスタは、周期が219937 − 1で、6,000桁を超える数である。そのため、どのプレイヤーもサイクルの終わりには到達しない。実際には、1回のスピンの結果が次のスピンについて使える情報を含むことはない。これは前の投稿で述べた性質で スロットに「次の当たり」がない理由:機械は、最近の結果に基づいて動く記憶も、追いかける予定も持たない。

乱数発生器は、隠れた状態を持つ決定論的なルールである。その出力は停止番号に変換され、リールごとに1つ生成される。オッズの公平性にとって重要なのは、すべての停止位置が等しく出やすく、列が予測しにくいことである。

マッピングがオッズに与える影響

発生器はシンボルのことを知らない。停止番号を生成するだけである。シンボルのオッズは、そのシンボルを示す停止位置の数から決まる。これはリールストリップの投稿で扱った、「数 ÷ 長さ」のルールである。16停止のうち2つにシンボルがあれば、リールがそこに止まる確率は 2 ÷ 16 = 12.5% となる。

自分で確かめられるチェック

0から15までの任意のシードを選び、玩具のルールを16ステップ実行する。各数値0から15が一度ずつ現れるはずである。同じシードから再開すると同じスピンが得られる。これがシードの意味である。

Brasslight Slots: Casino Games は、猫テーマの5リール・スロットで、243ウェイ、Yarn Pickボーナス、デイリー賞品ホイール、TurboとAutoスピンを備えています。仮想コインのみを使用し、現金は一切なく、コインとジェムに現金価値はありません。

Google Play で入手