How to generate Random N bit hex numbers?

Christ Schlacta aarcane at
Mon Apr 19 18:44:53 CEST 2010

any random class that can create an integer can create an n-bit random 
integer.  just create a random number by whatever means, then pull/mask 
off N bits using bitwise operators, and store them however you need.

my_6_bit_rand = rand() & 0x3F; /* 0x3f = 11 1111, so it takes the low 6 
bits of the return from rand, and assigns it to my_6_bit_rand.  you
  can convert it to a hex string using sprintf or display it as hex 
using cout or printf, or you can pull out a C++ string using 
ostringstream et al.

Ali Sydney wrote:
> All,
>     I am rather new to the GMP. With this said, I am attempting to generate a random N bit (where N can be any integer ex. 1024) hexadecimal number using the c++ interface.  Below is a simple test where I generate a random '6' bit number in decimal.  
> gmp_randclass r (gmp_randinit_lc_2exp_size, 32);
> mpz_class z; 
> z=r.get_z_bits(6);  //z stores value of random integer.
> However, I have not been able to find a function to do this similar process and produce hexadecimal random number.  
> If this is not possible, how would I go about converting an mpz_class integer to hexadecimal? For example if
> mpz_class z;
> z=10;
> how would I then convert z to hexadecimal?
> Best Regards,
> Ali
> _______________________________________________
> gmp-discuss mailing list
> gmp-discuss at

More information about the gmp-discuss mailing list