2009-05-03 15 views
6

मैं एक सिमुलेशन चलाने के लिए चाहता हूं जो पैरामीटर के रूप में उपयोग करता है एक त्रिकोणीय संभाव्यता वितरण से उत्पन्न मूल्य को कम सीमा ए, मोड बी और ऊपरी सीमा सी के साथ उत्पन्न करता है। मैं इस मान को पायथन में कैसे उत्पन्न कर सकता हूं? क्या इस वितरण के लिए एक्सपोवायरेट (लैम्ब्डा) (यादृच्छिक से) के रूप में कुछ सरल है या क्या मुझे इस बात को कोड करना है?पायथन, सिम्पी: त्रिकोणीय संभाव्यता वितरण से मूल्य कैसे उत्पन्न करें?

उत्तर

6

यदि आप NumPy पैकेज डाउनलोड करते हैं, तो इसमें एक function numpy.random.triangular (बाएं, मोड, दाएं [, आकार]) है जो वास्तव में आप जो खोज रहे हैं वह करता है।

4

के बाद से, मैं अजगर 2.4 से की यादृच्छिक प्रलेखन जाँच गया था मैं इस चूक: एक यादृच्छिक चल बिन्दु संख्या एन ऐसी है कि कम < = एन ¶ वापसी

random.triangular (कम, उच्च, मोड) < = उच्च और उन सीमाओं के बीच निर्दिष्ट मोड के साथ। निम्न और उच्च सीमा शून्य और एक के लिए डिफ़ॉल्ट है। मोड तर्क एक सममित वितरण प्रदान करते हुए सीमाओं के बीच मध्य बिंदु पर डिफ़ॉल्ट होता है। संस्करण 2.6 में नया।

+0

यह संभवतः अधिकांश उपयोग मामलों के लिए स्वीकार किए गए एक से बेहतर जवाब है। यह कष्टप्रद है कि एपीआई के पास NumPy के लिए एक अलग आदेश है हालांकि! –

2

मान लें कि आपका वितरण NumPy या Python Standard Library द्वारा प्रबंधित नहीं किया गया था।

ऐसी परिस्थितियों में जहां प्रदर्शन बहुत महत्वपूर्ण नहीं है, अस्वीकृति नमूनाकरण आपके द्वारा उपयोग किए जाने वाले वितरण से ड्रॉ प्राप्त करने के लिए एक उपयोगी हैक है।

अपने त्रिकोणीय वितरण के लिए, आप की तरह

from random import random, uniform 

def random_triangular(low, high, mode): 
    while True: 
     proposal = uniform(low, high) 
     if proposal < mode: 
      acceptance_prob = (proposal - low)/(mode - low) 
     else: 
      acceptance_prob = (high - proposal)/(high - mode) 
     if random() < acceptance_prob: break 
    return proposal 

कुछ कर सकते हैं आप कुछ नमूने

pylab.hist([random_triangular(1, 6, 5) for t in range(10000)]) 

प्लॉट कर सकते हैं सुनिश्चित करें कि सब कुछ ठीक लग रहा है बनाने के लिए।

+0

अच्छा सामान्य उद्देश्य संकेत! ओपी के लिए, यहां विचार वांछित वितरण की घनत्व से वर्दी से संबंधित है। –

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