[Numpy-discussion] Random int64 and float64 numbers

Sturla Molden sturla at molden.no
Sun Nov 1 23:14:41 EST 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>
  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.


More information about the NumPy-Discussion mailing list