Problem with gmp_randinit_set
bodrato at mail.dm.unipi.it
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"...
More information about the gmp-bugs