[Numpy-discussion] Random int64 and float64 numbers

David Cournapeau david@ar.media.kyoto-u.ac...
Sun Nov 1 22:07:00 CST 2009


Sturla Molden wrote:
> 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.
>   

Yep, I was bitten by it as well: http://projects.scipy.org/numpy/ticket/965

David


More information about the NumPy-Discussion mailing list