2010-02-05 8 views

Antwort

2

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(); 
} 
+0

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

+0

Können Sie Ihren Code als neue Frage veröffentlichen? Vielleicht kann ich etwas sehen ... –

+0

Ich kann das nicht machen. Ich bin derzeit blockiert .. – Learner

0

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.

Verwandte Themen