[Numpy-discussion] numpy.random.gamma returns 0 for small shape parameters

Pauli Virtanen pav at iki.fi
Tue May 29 10:45:49 EDT 2012

Val Kalatsky <kalatsky <at> gmail.com> writes:
> You'll need some patience to get non-zeros, especially for k=1e-5
> In [84]: np.sum(np.random.gamma(1e-5,size=1000000)!=0.0)
> Out[84]: 7259
> that's less than 1%. For k=1e-4 it's ~7%

To clarify: the distribution is peaked at numbers
that are too small to be represented as floating-point
numbers in the computer. The returned zeros indicate
underflow, i.e., some positive numbers between zero
and the floating point number closest to zero (~ 1e-308).

To work around this, you need to do some math to redefine
the problem so that the numbers involved fall into 
a region where the floating point numbers are dense.

Pauli Virtanen

More information about the NumPy-Discussion mailing list