in reply to is rand() random

rand() uses a random number generator from your platform. This function typically returns an integer in the range 0 to some maximum RAND_MAX. That is, the output consists of a fixed number of bits. Regardless whether you are using a pseude random number generator (which will have some kind of periodicity), or some true random source. You get 15, 16, 31, 32, 48 or some other number of bits.

All Perl is doing is do some scaling, dividing the number it got from the system by the maximum the system can return, and then multiplying it by the argument you gave to rand. Hence, the argument you give to rand has little influence on the "randomness" (there might be some roundoff errors, but they should not have much influence).

If your program repeatedly generates output, I guess your systems C library is broken. Try translating the program to an equivalent C program and see what happens.