Re:
Here's a question: If the algorithm were changed to use a modulus which fits into Squeak's 30-bit integers, would the resulting code run any faster than the float version, or still slower?
Probably quite a bit faster. But finding a set of parameters that have all the desirable properties may not be trivial. The nice thing about the Park-Miller parameters is that they have been studied and deemed "good".
I wonder if this problem of getting stuck in a cycle is a side effect of floating point roundoff and/or normalization? I would expect the integer version of the algorithm to be free of this problem; it was a well-tested and studied choice of parameters, which is why we chose it.
I did try some long runs of the generator with both integer and float computations, both seeded identically, and they were in complete agreement after a million or so iterations. The kinds of calculations involved look like they would tend to avoid roundoff errors, too, so my guess is the float calculations are probably exact.
Thanks for trying this. I'm pretty certain that the bug is due to my "improved" initialization code (see the thread "Re: More on Random").
-- John