しかし、通常はこのような方法で精度を向上しようとしても、 疑似乱数 rand() の乱数としての質 (ランダムさ) が問題になるだろうし、 むしろそちらの方の影響の方が強いのではないかとも思う。 よって、通常は単に を使っておけば十分だろうと思う。
また、0.0 以上 1.0 未満の実数の乱数を返す drand48() のような実装を使って、
y=(int)(drand48()*L+1);