乱数とは、一意的ではない(つまりランダム)次に何が出るかわからない数字である。
概要
簡単にいうとサイコロを投げるようなものである。たとえば1,2,3,4,という数列があって高校数学の数列の授業であれば次は5と推測するところだが、これがサイコロを投げた結果の数列であるなら次は1から6までのいずれかわからない。
次の値がわからなければ偏っていても乱数である。一般にイメージするような範囲内のどの値も均等に現れるサイコロのような乱数は一様乱数という。だが乱数とだけ言っているときは一様乱数のことを指すのがほとんど。
主に、コンピュータ通信においてはデータの暗号化に使われる鍵の生成、プログラミングにおいては乱数を生成した上で、インデックスが付いている配列の中から生成した乱数とインデックスの値が同じ番地にあるデータを呼び出すといった使われ方がある。
なお、コンピュータで使われている乱数は主に擬似乱数と呼ばれる物であり、基本的に完全な乱数は生成できない(アルゴリズムによっては完全な乱数に近づけることはできるが、計算を行わなければならない。故に「擬似」乱数である)。
完全な乱数とは、サイコロなどのハードウェア乱数生成器と呼ばれる物理現象を利用した乱数生成器で生成された乱数を指す。尤も、セキュリティ的に重要な機器(例えばSSLなどの鍵を管理するサーバ)には実装されていたり、今後のコンピュータでは標準で実装しようという動きもある。
感覚としての乱数に対する人間の期待。あるいは結果の偏りと乱数の偏り。
乱数(一様乱数)を並べると、人間の感覚として「偏っている(よくない/一様でない乱数である)」と感じられることがある。
サイコロは[1-6]の乱数を返す装置であるといえる。このサイコロを10000回投げた結果の中に
という列が現れたとき、
のようなバラけた結果が続いているものに比べてよくない乱数であるように見える。しかし、(理想的)サイコロは投げるたびにどの値も同じ1/6の確率で表示するのであって、12文字切り出した結果は先の例であろうと
だろうと
566556565665
だろうと同じ確率で現れる。完全な乱数では1が10000回連続する偏った結果と、あなたが無作為に書いた10000桁の予言の値が同じ確率で現れることは言えるが、結果を並べたとき必ずきれいにバラけていることを保証しない。
つまり人間の直感的な予想とはずれるが、むしろ1が連続するような偏った結果が絶対登場しない乱数の方が「偏って」いる。
関連して、人間の直感的な乱数への期待が裏切られる例を示す。52枚のトランプの山から1枚抜いて確認し、クラブのAだったとする。これを戻してシャッフルして再び1枚抜くとき、クラブのAとハートの3を引く確率は後者の方が高いように感じてしまう。また、宝くじのようなくじでは、ゾロ目のくじは当たりづらいように感じられる。トランプの例ではクラブのAを引く確率とクラブのA以外すべてを引く確率を、くじの例ではゾロ目が当たる確率とゾロ目以外すべてが当たる確率を人間は比べてしまう。しかし、くじの当選番号の各桁を決定するルーレットで人為的な調整がなければ、あるゾロ目の番号が当たる確率とあるバラバラな番号が当たる確率はかわらない。
これらの人間の乱数への期待と現実による裏切りはゲームなどで問題になる。TRPGなどダイス・ロールが公開されている場合は運が悪いで済むが、衝立の向こうでGMがダイス・ロールしたり、ビデオ・ゲームであったりすると、人は結果を操作されていると感じるようになる。[1]ゲームなどではそれに加えて、良い結果が出たこと、悪い結果が出たことを強く記憶していることも感覚としての乱数の偏りに影響を与えている。
余談ながら、これを逆手にとって人間の感覚にそった「偏った『偏っていない擬似乱数』」を研究した人もいる。[2]
擬似乱数
先に書いたように、通常のコンピュータは計算しかできないので予想できない数である乱数は作れない。かわりに乱数の代わりとして使えるような擬似乱数の計算を行う。
詳細は擬似乱数の記事を参照。
関連項目
脚注
- *ただし、ビデオ・ゲームで使われる擬似乱数は完全な乱数ではないし、実装によっては実際はっきりと偏っていることもある。
- *https://www.jaist.ac.jp/is/labs/ikeda-lab/rs_randomgeneration.html
- 6
- 0pt