2010-02-05 12 views
7

मुझे यादृच्छिक पोइसन वितरित संख्या (जावा में नीचे) उत्पन्न करने के लिए Knuth के एल्गोरिदम से अवगत है, लेकिन मैं इसे विधि के साथ यादृच्छिक रूप से generateEvent() पर कॉल करने में कैसे अनुवाद करूं?मैं पोइसन वितरण के साथ असतत यादृच्छिक घटनाएं कैसे उत्पन्न करूं?

int poissonRandomNumber(int lambda) { 
    double L = Math.exp(-lambda); 
    int k = 0; 
    double p = 1; 
    do { 
     k = k + 1; 
     double u = Math.random(); 
     p = p * u; 
    } while (p > L); 
    return k - 1; 
} 

उत्तर

2

यदि आप इंटर-ईवेंट आगमन समय अनुकरण करना चाहते हैं, तो आप घातीय वितरण चाहते हैं।

Pseudorandom Number Generator - Exponential Distribution

आपका कोड पर एक नजर डालें तो इस प्रकार दिखाई देगा:

// 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

हाय, मुझे जावा का उपयोग करके पोइसन अंतराल दर में यादृच्छिक संख्याएं उत्पन्न करने की आवश्यकता है .. मैंने आपके फ़ंक्शन और विधि poissonRandomInterarrivalDelay का उपयोग करने का प्रयास किया है हमेशा लैम्बडा के किसी भी मूल्य के लिए शून्य लौटाता है। – Learner

+0

क्या आप अपना कोड एक नए प्रश्न के रूप में पोस्ट कर सकते हैं? शायद मैं कुछ देख सकता हूं ... –

+0

मैं इसे करने में सक्षम नहीं हूं। मैं वर्तमान में अवरुद्ध हूं .. – Learner

0

प्वासों यादृच्छिक संख्या आप पैदा कर रहे हैं, के रूप में स्कॉट उल्लेख किया है, अपनी घटनाओं की आवृत्ति का प्रतिनिधित्व करते हैं। एक बार आवृत्ति होने के बाद, आप एक दूसरे वितरण का उपयोग करके अंतराल पर अपनी घटनाओं को फिट कर सकते हैं, वर्दी कहते हैं।

मान लीजिए एन के अंतराल के लिए उत्पन्न घटनाओं की संख्या के है। फिर आपको केवल (के + 1) यादृच्छिक संख्याएं उत्पन्न करने की आवश्यकता है जो एन

पर योग करें। < ----------------------- एन ------------------------- > |
--r_0 - (घटना) --- r_1 -..- (event_k) - r_ (k + 1) -

ऐसा करने के लिए, बस याद रखें (के + 1) यादृच्छिक संख्याएं और विभाजन उन्हें उनकी राशि से, एन द्वारा विभाजित किया गया। इन संख्याओं का पहला के आपके कार्यक्रमों का टाइमस्टैम्प बन गया।

संबंधित मुद्दे