Perl's rand uses the C run time rand provided by the compiler. Often such pseudo-random number generators perform very poorly and the Microsoft one provided by the compiler used to build ActiveState's Perl offering is a case in point.

However, it's a problem that is easily fixed. Just use Math::Random::MT qw(srand rand); and the problem goes away regardless of how your Perl was built.