Seite 1 von 1

vermutlicher Fehler in random.gammavariate

Verfasst: Montag 14. Juni 2010, 10:38
von Goswin
Ich glaube, einen Fehler im Modul <random>, Funktion <random.gammavariate> entdeckt zu haben, seid ihr auch dieser Meinung? (Ich habe freilich keine Ahnung, wie normale Programmierer so etwas den Verantwortlichen melden, wer Lust hat, kann das ja mal versuchen)


Wenn wir folgenden Code laufen lassen,

Code: Alles auswählen

import random
random.seed(0)
alfa = 100.0
beta = 10.0
mean = alfa/beta  #see wikipedia: gamma_distribution
#
for ii in range(10):
   xx = random.gammavariate(alfa,beta)
   print("mean = {},  xx = {:9.2f}".format(mean,xx))
erhalten wir
mean = 10.0, xx = 1127.39
mean = 10.0, xx = 977.54
mean = 10.0, xx = 1003.20
mean = 10.0, xx = 1095.60
mean = 10.0, xx = 993.38
mean = 10.0, xx = 1176.32
mean = 10.0, xx = 935.84
mean = 10.0, xx = 1034.80
mean = 10.0, xx = 1177.97
mean = 10.0, xx = 1108.37
Wenn wir bedenken, dass für die Gammaverteilung xx>0 gelten muss, sind diese Ergebnisse einfach lächerlich.

Re: vermutlicher Fehler in random.gammavariate

Verfasst: Montag 14. Juni 2010, 11:29
von BlackJack
Wenn Du `mean` richtig berechnest, also `alfa * beta` ist es vielleicht weniger lächerlich: GammaDistribution[100.0,10.0]

Re: vermutlicher Fehler in random.gammavariate

Verfasst: Montag 14. Juni 2010, 12:07
von Darii
Man muss immer aufpassen wie eine Funktion parametrisiert ist. Da gibt es offensichtlich verschiedene Ansätze. Siehe deutsche und englische Version der Wikipedia. Ich würde es trotzdem als Fehler melden, damit in der Doku konkretisiert wird, was α und β sein sollen. Das ist da ja recht knapp. Ein Hinweis, dass αβ der Erwartungswert und αβ^2 die Varianz ist, sollte ja schon reichen.

Re: vermutlicher Fehler in random.gammavariate

Verfasst: Montag 14. Juni 2010, 13:22
von Goswin
Tja, alles ist so einfach, wenn man es erst einmal weiß.
Vielen Dank für den Hinweis !

Re: vermutlicher Fehler in random.gammavariate

Verfasst: Montag 14. Juni 2010, 15:08
von Rebecca
Fuer Bugs in Python (und der Doku) gibt's natuerlich den Bugtracker. :)