こんにちは!エヌズクリエイツ開発チームの本田です。
今回から、みんな大好き「乱数生成器」について、紹介していきます。
乱数とは
「乱数」という言葉の意味を理解する上で最も馴染みやすい例はサイコロかと思います。1から6までの盤面が振られている物体を転がすことでランダムな数を出すことができます。
フォン・ノイマンという電子計算機の発明者をきっかけにこの乱数が機械上で利用できるようになり、コンピュータの世界でもあらゆる場面で利用されるようになりました。今ご覧になっているブログを閲覧する上でも、SSL通信を通して、すべての情報が暗号化され、人間に解読できないハッシュ値として皆さんの端末に情報が届きます。この情報が暗号化される過程では、必ず乱数が利用され、悪意のある第三者による解読ができないようセキュリティ上の工夫がされています。
乱数とゲーム
ゲームだともっとわかりやすいでしょう。ヒトカゲを連れてマサラタウンの草むらを歩くと(古くてすみません)、必ずランダムにポッポなど野生のキャラクターが出現します。これは、キャラクターを草むらの中で1マス動かすごとに乱数が生成され、特定の値になった時にはポッポが出現するというロジックになっていると推測できます。乱数の利用されないゲームがもしあるとするならば、退屈で仕方ないことでしょう。
擬似乱数生成器
この乱数生成にも種類があります。1つ目が擬似乱数生成器です。現代コンピュータの仕組み上、全てのソフトウェアの処理には0か1かの論理演算が利用されています。そのことは、JSでいうところのMath.random()などを使ってランダムな値を生成しようとしても、必ず論理というルール・規則が適用されるため、天文学的な数字の回数を繰り返すと、同じキーに対して同じ値が同じ順番で出現します。現代のコンピュータプログラミングでは全てこの擬似乱数生成器が利用されます。擬似乱数生成器の最大の特徴は、100%ランダムではなく規則性・再現性があることです。ランダムのフリをして実は擬似的に規則性を持った数値を算出するのが擬似乱数生成器に当たります。
真正乱数生成器
この擬似乱数生成器の規則性を回避するために、ATMのパスワード入力などの場面では、物理的なエントロピーを利用するなどして、堅牢な仕組みを構築する努力が行われています。物理的なエントロピーの利用とは例えば、抵抗の熱や電磁波ノイズなど、環境上予測不可能な信号を検知する仕組みをハードウェア自体に備えることで、これを実現しようとします。ただしこれも、時間の経過とともに、ランダム性は薄れていきますが、ソフトウェアのみで実現する乱数生成と比べてれば遥かに予測困難な乱数生成が実現可能になります。(コストもめっちゃ上がる)
厳密には存在しないこの真正乱数生成器ですが、近づけるための工夫がATMなどの機械では行われています。
以上です
今回はこんなところです、それでは!









