2002-01 << 2002-02 >> 2002-03

2002-02-23 (土)

  • 天気:晴れ

    *乱数とか

IEで数MBのテキストを表示しようとするとしばらく反応がなくなるのはどうにかならないのかなぁ.

暗号化ソフトで乱数を使っていたりするのだけど,Cのrand関数をそのまま呼び出してます…って事はコンパイラが変わると互換性が無くなる…ってだめじゃん.というわけで,自前の乱数を発生させる関数を書く(といっても本に載っていたもの名のだけど)で,乱数の周期って結構短いですね.それでも乱数かってほどです.知っている方も多いと思いますが,コンピュータの乱数はすべて周期関数です.つまり規則があって同じパターンが繰り返し現れます.メモリが有限である以上,周期関数しか作れないのですが…何しろすべてのメモリの状態が有限個しかないのだからその状態から計算される乱数も有限なわけだし.なので,ゲームとかでランダムな要素が含まれる場合でもどうにかすれば規則をつかめるかもしれません.(ハードの時計を使えばちょっと変わりますが…)ぷよぷよで次に出てくる色がわかるとか(笑)も理論的には可能です.なんとなく,VC++のrand関数で最下位1ビットだけを見ていると,数千回でなにやら規則ありそうな動作をし始めるし….上位ビットのほうが周期が長そうなので,精度のいい乱数がほしいときは,下位ビットでなくて上位ビットを使うのが正しいのかな?

というわけで,暗号化にこんなもの使っていいのか…それ以前にまともなアルゴリズム勉強しろって感じですが簡易の暗号ということで(^^;.

2002-01 << 2002-02 >> 2002-03