Lassen Sie mich durch die Tatsache, all diese Vorrede, dass nichts davon wirklich zufällig ist, ich Ich spreche über Pseudozufallszahlengeneratoren.
Lassen Sie mich auch sagen, dass ich dies nie für Produktionsqualität Code tun musste. Ich habe das für eine hw-Aufgabe getan, in Python. Ich simulierte Poisson-Zufallsvariablen.
Die Art und Weise, dass ich es Verwendung der folgenden Tatsachen gemacht habe:
- Eine Poisson Zufallsvariable ist eine Summe von exponentiellen Zufallsvariablen.
- Wir können die inverse Transformationsmethode verwenden, um exponentielle Zufallsvariablen zu generieren. http://en.wikipedia.org/wiki/Inverse_transform_sampling.
Insbesondere kann man die Tatsache nutzen, dass: wenn X 1, ..., X n unabhängig sind Standard exponentielle Zufallsvariablen, dann Z = min (k: X 1 + ... + X k < & Lambda;) - 1 ist Poisson (& lgr;).
So mit dem, schrieb ich den folgenden Code in Python Poisson Werte zu generieren:
class Poisson:
"""Generate Poisson(lambda) values by using exponential
random variables."""
def __init__(self, lam):
self.__lam = lam
def nextPoisson(self):
sum = 0
n = -1
while sum < self.__lam:
n += 1
sum -= math.log(random.random())
return n
Beispiel für die Verwendung der Klasse ist:
# Generates a random value that is Poisson(lambda = 5) distributed
poisson = Poisson(5)
poisson_value = poisson.nextPoisson
ich das hier gepostet, weil es gut ist, zu wissen, dass diese Arten von Beziehungen existieren, und diese inverse Transformationsmethode gibt Ihnen eine allgemeine Möglichkeit, mit der Erzeugung von zufälligen Werten nach einer bestimmten kontinuierlichen Verteilung umzugehen.
Eigentlich scheint dieser Link auch die "nextGaussian" -Methode hervorzuheben, um auch normale Variablen zu erstellen. – gnovice