[Numpy-discussion] Random int64 and float64 numbers

Sturla Molden sturla@molden...
Sun Nov 1 22:14:41 CST 2009


Sturla Molden skrev:
> Robert Kern skrev:
>   
>> Then let me clarify: it was written to support integer ranges up to
>> sys.maxint. Absolutely, it would be desirable to extend it.
>>
>>   
>>     
> Actually it only supports integers up to sys.maxint-1, as 
> random_integers call randint. random_integers includes the upper range, 
> but randint excludes the upper range. Thus, this happens on line 1153 in 
> mtrand.pyx:
>
> return self.randint(low, high+1, size)
>
> inclusive upper interval should call rk_interval
>   

I love this one:

cdef long lo, hi, diff
[...]
diff = hi - lo - 1

which silently overflows, and is the reason for this strange exception:

 >>> np.random.random_integers(-2147483648,high=2147483646,size=10)

Traceback (most recent call last):
  File "<pyshell#68>", line 1, in <module>
    np.random.random_integers(-2147483648,high=2147483646,size=10)
  File "mtrand.pyx", line 950, in mtrand.RandomState.random_integers
  File "mtrand.pyx", line 750, in mtrand.RandomState.randint
ValueError: low >= high

I'll call this a bug.


Sturla





















More information about the NumPy-Discussion mailing list