Borrowing the multiplier from LMD2, we can rapidly create a long (49,327,206,862 outputs, excluding the initial x0=0) sequence of nonzero 32-bit values by simply altering (x0, c0) as follows, while keeping ITERATE_NO_ZERO_CHECK as described in the previous post:
As usual, ITERATE_NO_ZERO_CHECK means:
p = 0xFE001000 * x + c
x <- p MOD 2^32
c <- p / 2^32 (Shift p right by 32.)
Except that, unlike with LMD2:
(x0, c0) = (0, 0xDA6D32BA)
Thus:
(x1, c1) = (0xDA6D32BA, 0)
(x2, c2) = (0x5F2BA000, 0xD8B865FB)
(x3, c3) = (0x92B865FB, 0x5E6D4EB3)
(Only the "x" values are the pseudorandom outputs.)
Don't forget that 0xFE001000 is easy to multiply by, as described in the previous post.
Someone out there probably has a use for such a sequence. And it's not bad from error detection standpoint, either.
No comments:
Post a Comment