[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