[erlang-questions] [ANN] Erlang UUID
Richard O'Keefe
ok@REDACTED
Sat Mar 3 06:02:04 CET 2012
On 3/03/2012, at 1:32 PM, Michael Truog wrote:
> If you use this implementation, then it would provide 408 bits of randomness, uniformly distributed.
I don't see how it can. Just because all the numbers are in a given range does not mean that
all the numbers in that range are possible. The Wichmann-Hill generator has a state with
4 31-bit numbers, meaning that you can't possibly get more than 124 bits out of it. If you
really get more, you have a different algorithm.
Using 64-bit integer arithmetic, the algorithm looks like
a = (a * 11600LL) % 2147483579;
b = (b * 47003LL) % 2147483543;
c = (c * 23000LL) % 2147483423;
d = (d * 33000LL) % 2147483123;
w = a/2147483579.0 + b/2147483543.0
+ c/2147483423.0 + d/2147483123.0;
if (w >= 2.0) w -= 2.0;
if (w >= 1.0) w -= 1.0;
return w;
More information about the erlang-questions
mailing list