x^64 + x^39 + x^21 + x^13 + 1

static uint32_t Q[64];

uint32_t lfg() {

static uint32_t i = 0;

return Q[++i & 63] += Q[(i - 39) & 63] + Q[(i - 21) & 63] + Q[(i - 13) & 63];

}

Period is 2^95. Passes L'Ecuyer's BigCrush test suite.

Fill Q up with nonzeros. Multiply can be used as the operation, in which case Q must be filled with numbers of the form 4k-1. The period will also be shorter, read more here.

## No comments:

Post a Comment