デタラメの世界
いま、何かのパスワード用に数字をデタラメに書いてみようと思ったとしよう。これは造作もないことのように思えるが、もし本当にデタラメに並べてみようと思ったら大変なことになる。
846659326456584
これは今パソコンの数字を左右の人差し指でデタラメに打ち込んでみたのだが、一見して数字に偏りがあることが分かる。
436538753492965423875
今度は左右八本指でデタラメに打ち込んだのだが、どうだろう、本当にランダムになっているだろうか。どうしても人間の指には動きの癖があるので、この方法で真にデタラメの数列を得ることはできない(大体さっきから0も1も一個もない)。では一つずつ考えながら打ち込むとどうなるだろう。同じ数字が連続しないように、同じ組み合わせが何度も出ないように、全ての数字がまんべんなく出るように注意しながら打ち込んで行くと、今度はきれいにばらついた数列ができる。しかしこんなに慎重に考えながら作ったものを果たして「デタラメ」と言っていいのだろうか。
真にランダムに並んだ数列を「乱数」と言う。乱数を得るには例えば正二十面体でできた二十面サイコロを使って出た数字を並べていく方法が考えられる。
しかし二十面サイコロは素人には簡単には作れない。では、普通の六面サイコロを使って乱数を得るにはどうしたらいいだろう。
6面に0から9までの目を全部刻むことはできない。だからうまく数字を配したサイコロを作り、二回振ってその目を足した数を得ることにしてみよう。
しかしそういうサイコロはできそうもない。例えば最小の目を0とするとして、それでは最大の目をいくつにするかと考えるだけで行き詰まってしまう。4にすると二回合計しても8にしかならない。かと言って5にすると10になってしまう場合が出てくる。この方法では駄目なのだ。
それでは、二個の違うサイコロを作ることにすればどうか。
二個のサイコロを振って出る「場合の数」は6×6で36通りである。このままでは10種の結果が同率で得られるようにはできないから、一個のサイコロは一面を無効な面として五面サイコロにする。そして二個を振って無効な面が出た場合を勘定に入れなければ、場合の数を5×6の30通りにすることができる。
30通りということになれば、あとは0から9までのどの数字もそれぞれ3通りずつの出方をするようにすればよいわけである。
ではサイコロに刻む目を考えてみよう。
まず、0が3通り出るということは、片方のサイコロの一面が0で、もう一方のサイコロの三面が0であること以外には考えられない。そこで一面が0のサイコロをA、もう一つをBと名づけよう。どちらが五面サイコロなのかまだ分からない。
A |
|
B |
0 |
|
0 |
? |
|
0 |
? |
|
0 |
? |
|
? |
? |
|
? |
? |
|
? |
次に、1が3通り出るということは、Aの一面が1であるか、Bの三面が1であるかの二組しか考えられない。
A |
|
B |
0 |
|
0 |
1 |
|
0 |
? |
|
0 |
? |
|
? |
? |
|
? |
? |
|
? |
|
または |
A |
|
B |
0 |
|
0 |
? |
|
0 |
? |
|
0 |
? |
|
1 |
? |
|
1 |
|
|
1 |
|
である。
後者はAが五面サイコロであることに決まった。
さあ、このあとを考えてみよう。簡単な頭の体操だ。はたして目的に適うサイコロはできるだろうか。
A |
|
B |
0 |
|
0 |
1 |
|
0 |
イ |
|
0 |
ロ |
|
ホ |
ハ |
|
ヘ |
ニ |
|
ト |
|
。 |
A |
|
B |
0 |
|
0 |
チ |
|
0 |
リ |
|
0 |
ヌ |
|
1 |
ル |
|
1 |
|
|
1 |
|
(前者ではニあるいはトが無効な面になるとする。)
イ〜ルに入る数字を順に半角で入力して下さい。無効な面はxとします。
正解の場合だけ解説ページが開きます。(全部解らなければイロハニホヘトあるいはチリヌルのどちらかだけでもOKです。)
(チリヌルの答えはこのページのどこかにあります。)
ところでいったい乱数という「デタラメ」がなんの役に立つというのだろう。
よく知られているのは暗号用である。どんなに考えても考えつかない数字の組合せ、つまり乱数がカギとなっていれば、その乱数自体が知られない限り暗号は解読されないことになる。
物理学や経済学などでもランダムな現象の積み重ねの結果を実験によって確かめることが困難な場合は乱数を利用したシミュレーションが非常に役立つことになる。
しかしシステマティックに大量の乱数が必要なときにサイコロを振っていては仕事にならない。そこで真の乱数ではないがそれに非常に近い擬似乱数をコンピュータに作らせることになる。良い暗号やシミュレーションのためには中途半端な擬似乱数は適さないから、より複雑なアルゴリズムによる上質の擬似乱数がいろいろ工夫されている。
数学上でも乱数が利用される。一つの簡単な例を見てみよう。
乱数を使って円周率の数値を近似的に求める。
図の正方形の一辺の長さを2とすると、正方形の面積は4、内接する円の面積はである。
いま、この図上にデタラメに点を打っていくと図にはまんべんなく点が増えて行き、やがては真っ黒になって行くであろう。そのとき、真にデタラメに打たれているならば、打たれた全部の点の数と円の内部に打たれた点の数の比は4:に限りなく近づくであろう。
いま、−1から1までの値を取る乱数によって、デタラメに打つ点の座標
( x , y )
が次々に得られる。そして円の方程式より、
x^2 + y^2 ≦ 1 が満たされればそれは円内の点であることが分かる。
膨大な数の点について調べたあと、全部の点の数:円内の点の数=4: を解けばの近似値が得られるというわけである。
(註: x^2 は x の二乗を表わす。)
このような計算法を「モンテカルロ法」と言う。あのカジノで有名なモンテカルロから取った味のある名前である。
実際にパソコンの乱数発生機能を使ったプログラムを作って走らせてみると例えば下図のような過程が見て取れる。
全くランダムに打った点であるにも関わらず、点の多い所と少ない所によってぼんやりとした模様ができるのが不思議である。宇宙の星を眺めているようでもある。人為的にわざとまんべんなく打って行くとこうはならないであろう。
(注:モニター画面と倍率との組合せの相性により繰返しパターンが見えることがある)
真の「デタラメ」が――上のサイコロの問題で見たように――整然とした前提からでなければ生まれないものであることと、またそれにも拘らず、それは万遍ないものではなく偏りを含んでいるものであること。この二つは「デタラメ」の意味を考える上で大いに示唆的な事実である。
2468
TOP
|