mpz_rrandomb most significant bit always set

Torbjörn Granlund tg at gmplib.org
Sat Mar 5 17:54:09 UTC 2016


Emmanuel Thomé <emmanuel.thome at gmail.com> writes:

  Hi,
  
  The documentation of mpz_rrandomb says:
  
   -- Function: void mpz_rrandomb (mpz_t ROP, gmp_randstate_t STATE,
            mp_bitcnt_t N)
       Generate a random integer with long strings of zeros and ones in
       the binary representation.  Useful for testing functions and
       algorithms, since this kind of random numbers have proven to be
       more likely to trigger corner-case bugs.  The random number will
       be in the range 0 to 2^N-1, inclusive.
  
  I was surprised to notice that in fact, the most significant bit of
  the output seems to be always set, as shown by the code below.
  
  Sure, this behaviour does not *contradict* the documentation, but
  perhaps the latter could be changed to reflect this fact, as for
  example in:
       The random number will be in the range 2^(N-1) to 2^N-1, inclusive.
  
Thanks for spotting this.

I agree with your change, but I think our claim that 0 is included in
the returned numbers is wrong.  A less helpful fix would be to remove
the word "inclusive"...  :-)
  

-- 
Torbjörn
Please encrypt, key id 0xC8601622


More information about the gmp-discuss mailing list