[Numpy-discussion] Random int64 and float64 numbers

Thomas Robitaille thomas.robitaille at gmail.com
Sun Nov 1 20:57:17 EST 2009


Hi,

I'm trying to generate random 64-bit integer values for integers and  
floats using Numpy, within the entire range of valid values for that  
type. To generate random 32-bit floats, I can use:

np.random.uniform(low=np.finfo(np.float32).min,high=np.finfo 
(np.float32).max,size=10)

which gives for example

array([  1.47351436e+37,   9.93620693e+37,   2.22893053e+38,
         -3.33828977e+38,   1.08247781e+37,  -8.37481260e+37,
          2.64176554e+38,  -2.72207226e+37,   2.54790459e+38,
         -2.47883866e+38])

but if I try and use this for 64-bit numbers, i.e.

np.random.uniform(low=np.finfo(np.float64).min,high=np.finfo 
(np.float64).max,size=10)

I get

array([ Inf,  Inf,  Inf,  Inf,  Inf,  Inf,  Inf,  Inf,  Inf,  Inf])

Similarly, for integers, I can successfully generate random 32-bit  
integers:

np.random.random_integers(np.iinfo(np.int32).min,high=np.iinfo 
(np.int32).max,size=10)

which gives

array([-1506183689,   662982379, -1616890435, -1519456789,  1489753527,
         -604311122,  2034533014,   449680073,  -444302414,  
-1924170329])

but am unsuccessful for 64-bit integers, i.e.

np.random.random_integers(np.iinfo(np.int64).min,high=np.iinfo 
(np.int64).max,size=10)

which produces the following error:

OverflowError: long int too large to convert to int

Is this expected behavior, or are these bugs?

Thanks for any help,

Thomas



More information about the NumPy-Discussion mailing list