[Python-checkins] python/dist/src/Lib random.py,1.29,1.30
rhettinger@sourceforge.net
rhettinger@sourceforge.net
Mon, 13 May 2002 23:40:36 -0700
Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv29789
Modified Files:
random.py
Log Message:
Closes patch 529408 deprecating random.stdgamma().
Index: random.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/random.py,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** random.py 13 May 2002 23:40:14 -0000 1.29
--- random.py 14 May 2002 06:40:34 -0000 1.30
***************
*** 446,457 ****
def gammavariate(self, alpha, beta):
! # beta times standard gamma
! return beta * self.stdgamma(alpha)
!
! def stdgamma(self, alpha, *args): # *args for Py2.2 compatiblity
random = self.random
- if alpha <= 0.0:
- raise ValueError, 'stdgamma: alpha must be > 0.0'
-
if alpha > 1.0:
--- 446,458 ----
def gammavariate(self, alpha, beta):
!
! # alpha > 0, beta > 0, mean is alpha*beta, variance is alpha*beta**2
!
! # Warning: a few older sources define the gamma distribution in terms
! # of alpha > -1.0
! if alpha <= 0.0 or beta <= 0.0:
! raise ValueError, 'gammavariate: alpha and beta must be > 0.0'
!
random = self.random
if alpha > 1.0:
***************
*** 472,476 ****
r = bbb+ccc*v-x
if r + SG_MAGICCONST - 4.5*z >= 0.0 or r >= _log(z):
! return x
elif alpha == 1.0:
--- 473,477 ----
r = bbb+ccc*v-x
if r + SG_MAGICCONST - 4.5*z >= 0.0 or r >= _log(z):
! return x * beta
elif alpha == 1.0:
***************
*** 479,483 ****
while u <= 1e-7:
u = random()
! return -_log(u)
else: # alpha is between 0 and 1 (exclusive)
--- 480,484 ----
while u <= 1e-7:
u = random()
! return -_log(u) * beta
else: # alpha is between 0 and 1 (exclusive)
***************
*** 498,502 ****
((p > 1) and (u1 > pow(x, alpha - 1.0)))):
break
! return x
--- 499,523 ----
((p > 1) and (u1 > pow(x, alpha - 1.0)))):
break
! return x * beta
!
!
! def stdgamma(self, alpha, ainv, bbb, ccc):
! # This method was (and shall remain) undocumented.
! # This method is deprecated
! # for the following reasons:
! # 1. Returns same as .gammavariate(alpha, 1.0)
! # 2. Requires caller to provide 3 extra arguments
! # that are functions of alpha anyway
! # 3. Can't be used for alpha < 0.5
!
! # ainv = sqrt(2 * alpha - 1)
! # bbb = alpha - log(4)
! # ccc = alpha + ainv
! import warnings
! warnings.warn("The stdgamma function is deprecated; "
! "use gammavariate() instead",
! DeprecationWarning)
! return self.gammavariate(alpha, 1.0)
!
***************
*** 597,601 ****
(avg, stddev, smallest, largest)
! def _test(N=200):
print 'TWOPI =', TWOPI
print 'LOG4 =', LOG4
--- 618,622 ----
(avg, stddev, smallest, largest)
! def _test(N=20000):
print 'TWOPI =', TWOPI
print 'LOG4 =', LOG4
***************
*** 608,611 ****
--- 629,635 ----
_test_generator(N, 'expovariate(1.0)')
_test_generator(N, 'vonmisesvariate(0.0, 1.0)')
+ _test_generator(N, 'gammavariate(0.01, 1.0)')
+ _test_generator(N, 'gammavariate(0.1, 1.0)')
+ _test_generator(N, 'gammavariate(0.1, 2.0)')
_test_generator(N, 'gammavariate(0.5, 1.0)')
_test_generator(N, 'gammavariate(0.9, 1.0)')