Problem with gmp_randinit_set

Marco Bodrato bodrato at
Tue Feb 21 14:21:09 UTC 2017


Il Sab, 18 Febbraio 2017 12:42 am, Pedro Gimeno ha scritto:
> Yes. Only seeds up to 2^19937-20028 inclusive are guaranteed to generate
> different sequences, though, and with the new seeding function, only up to
> 2^19936-1. I don't think it'd be a big deal to cut it out to 2^19936-1

I'm looking more carefully at the code... and I doubt we are really giving
different sequences for all seeding-values up to 2^19937-20028.

We mangle the given value to obtain the seed with:
  (value^e) mod (2^n-k) for e=1074888996, n=19937 and k=20023,

Problem: e is even!
value and (2^n-k-value) will be mangled to the same seed...

Moreover, gcd(e, 2^n-k-1) = 12. I expect to find dozens of values giving
the same result after the exponentiation. So that we currently have only
2^19937-20028 different sequences that can be selected by a seed. If we
can obtain 2^19936-1, it's not a cut, it's an improvement!

Of course we can change the exponent, with a new one, co-prime with the
Euler phi of 2^n-k... but this is an incompatible change.

I'm leaning more and more towards the complete change of the seeding

> now. Seeds bigger would generate different results, potentially breaking
> compatibility if these are used, but I don't think there's a big chance of
> that happening.

If we change the function, the sequences will be changed for any value,
right? It's not only an issue affecting "bigger seeds"...

Best regards,


More information about the gmp-bugs mailing list