In message "[ruby-dev:6849] Re: {0,2}(regex.c), nonzero?(numeric.c), random"
    on 99/05/17, Akira Endo <akendo / t3.rim.or.jp> writes:
>man randしたら、分母は +1 してくれ、と書いてありました。
>でも、drand48は、知りませんでした。知らないことが多過ぎるよう
>ですので、しばらく知識を増やす予定です。

ええと rand() と drand48() は線形合同法で、random() は 
FSR (feedback shift register) です。 FSR は M系列乱数と
も呼ばれます。

線形合同法は初期値によって周期が異なるのに対し、ある原始
多項式に基づく FSR は本質的に1つの系列なので初期値によら
ず周期が決まっていますが初期値の取り方が十分離れていれば
高次モーメントの性質も良いとされています。

rand() はとくに LSB に近いビットが短い周期を持つことで嫌
われます。 drand48() は法を大きく(2**48)とることでこれを
改善しています。random() はこれらに比べ非常に長い周期を
持ちますが、やや遅いはずです。

BSD などには、/dev/random というのもあります。これは物理
乱数なので暗号の鍵など疑似乱数では困る場合に有効です。

-- gotoken