Ich schrieb eine Funktion (ohne die random.poisson-Funktion zu verwenden), die eine Zufallszahl aus einer Poisson-Verteilung mit Lambda a erzeugt.Erzeugen von zufälligen Poisson-Zahlen
Beim Ausführen der Funktion mit verschiedenen Parametern, bekomme ich immer 0. Ich denke, es ist das Problem des Algorithmus, aber nicht wissen, wo es falsch ist.
Hier ist mein Code.
#takes a as lambda (mean)
def random_poisson(a):
x = 0
p = 1
while p >= math.exp(a):
i = random.random()
p = p * i
x += 1
return x
verschiedenen Lambda-Wert Ausprobieren:
print(random_poisson(3))
print(random_poisson(5))
print(random_poisson(math.log(5)))
Der Ausgang:
0
0
0
Thanks so much!
Bitte geben Sie ein Beispiel für die Parameter, die Sie verwendet haben. – DyZ
@DYZ Ich habe die Beispiele hinzugefügt :) – xzhang66
Sie sollten 'math.exp (-a)' vorberechnen und das gespeicherte Ergebnis in Ihrem 'while'-Vergleich verwenden. – pjs