Paul.Zimmermann at loria.fr
Mon Oct 30 21:40:24 CET 2006
> Anybody knows how to "randomize" the mpn_random? Every time my program starts it generates the same sequence of "random" numbers.
> I know about high-level functions (gmp_randseed, gmp_randseed_ui) but I can't use them with low-level function mpn_random because there is no parameter of gmp_randstate_t type.
I suggest you have a look at mpn/generic/random.c and gmp-impl.h:
rands = RANDS;
_gmp_rand (ptr, rands, size * GMP_NUMB_BITS);
/* __gmp_rands is the global state for the old-style random functions, and
is also used in the test programs (hence the __GMP_DECLSPEC).
There's no seeding here, so mpz_random etc will generate the same
sequence every time. This is not unlike the C library random functions
if you don't seed them, so perhaps it's acceptable. Digging up a seed
from /dev/random or the like would work on many systems, but might
encourage a false confidence, since it'd be pretty much impossible to do
something that would work reliably everywhere. In any case the new style
functions are recommended to applications which care about randomness, so
the old functions aren't too important. */
More information about the gmp-discuss