解読されない暗号がちょっと話題になっていますね。私も研究室が情報系だったこともあり、ちょっと見てみました。
いろいろなBLOGでも紹介されていますが、ワンタイムパッドという解読されないと証明されてる暗号があります。例えばHELLO->WORLDに暗号化するためにHELLOと同じ長さの乱数を使い、その乱数は一回しか使わないという簡単なものです。これは「木を隠すなら森に隠せ」的に考えるとわかりやすいと思います。WORLD(暗号文)から元のHELLO(平文)を解読する過程ではWORLD->GOHANやWORLD->RAMENなどのそれらしい平文の候補(例えば文章なら意味のある単語)が大量に出てきます。その中にはWORLD->HELLOも出てくるでしょうが、それは他の候補にまったく同じに混じってるだけですから解読者が正解と知る方法はありません。つまり平文が解読者の目前に現れても正解と解らなければいいわけなのです。
例えばある人の名前を暗号化したとしましょう。解読者が平文は「人名」という情報と「全ての人名」の表をコンピュータに入力して乱数を総当たりして解読を試みれば・・・すべての人名が画面に表示されるだけです。これでは解読したとは言えないでしょう。ここで「平文の長さと同じ長さの乱数を一回しか使わない」というのがポイントとなります。同じ乱数を繰り返し使えば見当をつけることが可能となってきますから。
さて、簡単に「乱数」といいますが、実はプログラムでこれを作成するのはかなり面倒です。プログラムだけではどんなにがんばっても「擬似」乱数までです。これは同じプログラムを走らせればいつも同じ乱数を発生するからです(それでは困る場合には、コンピュータ内蔵の時計やCPU内蔵のカウンターや本格的な専用ハードウエアを使います)
ゲームの場合にはユーザーの入力のタイミングという要素がありますから乱数の性能が問題となる局面は少ないのですが、例えば画像のエフェクトなどで1024×1024の100万ピクセルくらいを相手にしたりすると「疑似」の部分が模様となって目に見える事があります。そんな場合には性能のいい乱数発生アルゴリズムを組み込むことがあります。(ちなみにCライブラリの乱数は速度重視のことが多く問題となることが多いです)
スポーツでもランダムな動きというのは簡単そうに見えて実は難しいものですよね:P
参考:「ワンタイムパッド」「メルセンヌ・ツイスタ」(ウィキペディア)