曖昧さ回避
概要
出現法則に規則性がない数の事。すごろく等の遊戯から暗号生成など用途は多岐にわたる。
コンピュータではその性質上、計算による擬似的な乱数しか生成できないので暗号生成といった秘匿性が重要な用途では物理現象から乱数を生成する装置を搭載しなければならない。
乱数と擬似乱数の違い
項目 | 乱数 | 擬似乱数 |
---|---|---|
生成方法 | 物理現象 | 計算 |
周期性 | なし | ある(長い周期で見ると無視できなくなる) |
ディジタル機器への実装 | 面倒 | 容易 |
乱数生成方法
さいころ
身近で簡単な生成方法である。そのため、遊戯によく用いられる。ただし、カジノなど一部の業界では規格に沿ったサイコロでなければ使うことはできない(イカサマ防止のため)。
また、正二十面体のサイコロを使うと、10進数の乱数を生成することができる。
熱雑音
抵抗体内の電子の不規則な熱振動による雑音を大幅に増幅してその雑音を必要な形に変換する。
ダイオードの雑音
ツェナーダイオードの降伏電圧近辺で電圧がごく僅かに不規則な上下をしているので、それを大幅に増幅してその雑音を必要な形に変換する。
放射性同位体の原子核崩壊
放射性同位体の崩壊は物質(≒原子の集団)としてみた場合は崩壊頻度は指数関数に基づいているが、個々の原子については崩壊するまでの時間は不定なので単位時間当たりに放出される放射線の数にはばらつきがある。そのことを利用して、原子核崩壊を検知しその結果を必要な形に変換する。
余談であるが吸収線量(放射線量)の計測はこの性質により吸収線量と検知器の精度により異なるが、十分な時間測定しなければまともな値は出てこない。特に吸収線量が低い場合は誤差が実用に耐えうる値に収束するまでの時間が長くなる。
用途
- 遊戯
- スペクトラム拡散通信(広い周波数帯に分散して通信する。耐妨害・秘匿性・耐雑音性に優れる。また多重接続も可能)
- 暗号通信
コンピューターゲームにおける乱数
コンピューターゲームでは、特にRPGのジャンルにおいては乱数がよく使われる。
敵にエンカウントする判定(ランダムエンカウントの場合)・どんな種類の敵に出会うか、攻撃時のダメージの揺れ幅、攻撃の命中・回避やクリティカルヒットの判定、アイテムドロップの有無と内容、など多岐にわたる。現在主流となっているソーシャルゲームのガチャも乱数の一種と言って良いだろう。
前述の通り、コンピューターでは計算などによる擬似的な乱数の発生、もしくはあらかじめ乱数テーブル(乱数表)を用意して、「現在何番目の乱数テーブルか」によって乱数を出すことが多い。
コンピューターゲームの場合、多くはあらかじめ乱数テーブルを用意して、画面の表示1フレーム(多くの場合1/60秒)毎に乱数テーブルを1つ進める『フレーム乱数』という方式を取っている。
乱数はゲームによって、設定メニューで調節できる設定、ゲームハード本体の日付や時刻の変更、セーブなどのゲーム中の行為によって調整できる場合がある。
ただし、ゲーム、もしくはゲーム内の場面によっては、フレーム乱数を採用していないケースもある。この状況を逆手にとって、敵にプレイヤーにとって不利にならない行動をとらせたり、味方のステータスアップを容易にするなどの裏技もある。(前述のフレーム乱数を採用している場合は、1度や2度有利な判定をもぎ取る程度ならともかく、全編に渡ってやろうと思うと、1/60秒のタイミングを、時に数十回から数百回も連続成功させなければならないので、そのような場合は人間の手作業ではほぼ不可能であり、後述の通り実質的にTAS専用の裏技となる。)
また、この乱数を完璧に解析して、プレイヤーに有利な状況を作り、コンピューターにプレイさせてそのゲームの最短タイムでクリアするTAS動画などがある。
擬似的なものであるため、確率上では可能であるはずの「当たり」が、擬似乱数においては複数重なった場合に「絶対に組み合わされない」ケースもあり、ハズレくじになるというプログラマーにとっての落とし穴もある。ファミリーコンピュータ版『ドラゴンクエストⅢ』の「オルテガvsキングヒドラ」などは有名で、擬似乱数のパターンの都合でどうやってもオルテガが勝利する結果を引き当てることができない。
乱数調整最大手クラスのゲームである『ポケモンシリーズ』ですら、最新の専用ツールではじき出した結果が間違っているということもざらで、突き詰めれば自分で乱数のパターンを調べる必要がある。乱数調整の手法自体が確立されてはいるが、需要が無い、乱数開発者が文字起こししてチャートとして整える自信がないなどの理由で、手法が一般に周知されていないものも多い。