Ich kenne Knuths Algorithmus zum Generieren zufälliger Poisson-verteilter Zahlen (unten in Java), aber wie übersetze ich das in den Aufruf einer Methode, generateEvent()
, zufällig nach Zeit?Wie erzeuge ich diskrete zufällige Ereignisse mit einer Poisson-Verteilung?
Antwort
Wenn Sie versuchen, die Ankunftszeit zwischen Ereignissen zu simulieren, möchten Sie die exponentielle Verteilung.
Werfen Sie einen Blick auf Pseudorandom Number Generator - Exponential Distribution
Ihr Code würde wie folgt aussehen dann:
// Note L == 1/lambda
public double poissonRandomInterarrivalDelay(double L) {
return (Math.log(1.0-Math.random())/-L;
}
...
while (true){
// Note -- lambda is 5 seconds, convert to milleseconds
long interval= (long)poissonRandomInterarrivalDelay(5.0*1000.0);
try {
Thread.sleep(interval);
fireEvent();
}
die Poisson-Zufallszahlen Sie generieren, wie Scott erwähnt, Stellen Sie die Häufigkeit Ihrer Ereignisse dar. Sobald Sie die Häufigkeit haben, können Sie ihre Vorkommen über das Intervall anpassen, indem Sie eine zweite Verteilung verwenden, z. B. Uniform.
Angenommen, die Anzahl der für ein Intervall von N erzeugten Ereignisse ist k. Dann müssen Sie einfach (k + 1) Zufallszahlen erzeugen, die zu N summieren.
| < ----------------------- N ------------------------- > |
--r_0 - (Ereignis) --- r_1 -..- (Ereignis_k) - r_ (k + 1) -
Um dies zu tun, einfach (k + 1) Zufallszahlen generieren und teilen sie durch ihre Summe geteilt durch N. Die ersten k dieser Zahlen werden zu Zeitstempeln Ihrer Ereignisse.
- 1. Wie erzeuge ich Zeit mit Scalacheck-Generatoren?
- 2. Erzeuge zufällige Punkte in einem bestimmten Bereich
- 3. Wie erzeuge ich Stereobilder von einer Monokamera?
- 4. Wie erzeuge ich Zeichenfolgen wie Hexadezimal mit einer anderen Basis?
- 5. Wie erzeuge ich Zufallsidenticons?
- 6. Wie erzeuge ich mehrstufige JSON mit R?
- 7. Wie erzeuge ich Datei mit einer bestimmten Größe in Windows?
- 8. Wie erzeuge ich XML aus XMLBuilder mit einer .xml.builder Datei?
- 9. RxJava und zufällige sporadische Ereignisse auf Android
- 10. Wie erzeuge ich kreisförmige Thumbnails mit PIL?
- 11. Wie erzeuge ich einen Report mit Kalebasse?
- 12. Wie erzeuge ich Mehrwortbegriffe rekursiv?
- 13. Wie erzeuge ich eine zufällige ganze Zahl zwischen min und max in Java?
- 14. Wie mache ich eine diskrete Farb-Flip-Animation mit JavaFX?
- 15. Wie erzeuge ich eine zufällige Zeichenfolge (der Länge X, nur a-z) in Python?
- 16. Wie erzeuge ich dynamische Elemente dynamisch?
- 17. Wie erzeuge ich Code unter Eclipse + PyDev?
- 18. Wie erzeuge ich die .svc Datei?
- 19. Scala/akka diskrete Ereignissimulation
- 20. Wie erzeuge ich eine alternierende Reichweite?
- 21. Wie erzeuge ich Sätze aus einer formalen Grammatik?
- 22. Wie erzeuge ich eine PDF-Datei aus einer Binärdatei?
- 23. Wie erzeuge ich Tastenanschläge in einer nicht-Formular-Anwendung
- 24. Wie erzeuge ich SWX-Dateien serverseitig?
- 25. Logik und diskrete Mathematik
- 26. Wie erzeuge ich eine Folge von ganzen Zahlen in einer gleichmäßigen Verteilung?
- 27. reagieren deaktivieren alle Ereignisse. Wie man "onClick" & "onChange" Requisiten ignoriert, wenn ich DOM erzeuge
- 28. Wie erzeuge ich Slug aus chinesischem Text?
- 29. Wie erzeuge ich ein anderes Projekt?
- 30. Wie erzeuge ich ein Datenflussdiagramm mit Clang oder anderen Tools?
Hallo, ich brauche Zufallszahlen in Poisson-Intervall-Rate mit Java erzeugen .. Ich habe versucht, mit Ihrer Funktion und Methode poissonRandomInterarrivalDelay liefert immer Null für jeden Wert von Lambda. – Learner
Können Sie Ihren Code als neue Frage veröffentlichen? Vielleicht kann ich etwas sehen ... –
Ich kann das nicht machen. Ich bin derzeit blockiert .. – Learner