आप described here के रूप में मनमाने ढंग से वितरण से यादृच्छिक संख्या उत्पन्न करने के लिए संचयी घनत्व फ़ंक्शन का उपयोग कर सकते हैं।
एक चिकनी संचयी घनत्व समारोह का उत्पादन करने के लिए एक हिस्टोग्राम का उपयोग पूरी तरह से तुच्छ नहीं है; आप अपने डिब्बे के केंद्रों के बीच मूल्यों के लिए scipy.interpolate.interp1d() उदाहरण के लिए इंटरपोलेशन का उपयोग कर सकते हैं और यह हिस्टोग्राम के लिए उचित रूप से बड़ी संख्या में डिब्बे और वस्तुओं के साथ ठीक काम करेगा। हालांकि आपको संभाव्यता समारोह की पूंछ के रूप में निर्णय लेना है, यानि सबसे छोटे बिन से कम मूल्यों या सबसे बड़े बिन से अधिक मूल्यों के लिए। आप उदाहरण के आधार पर अपने वितरण गाऊशियन पूंछ दे सकते हैं उदाहरण के लिए अपने हिस्टोग्राम के लिए एक गाऊशियन फिट करना), या आपकी समस्या के लिए उचित पूंछ का कोई अन्य रूप, या बस वितरण को छोटा कर सकते हैं।
उदाहरण:
import numpy
import scipy.interpolate
import random
import matplotlib.pyplot as pyplot
# create some normally distributed values and make a histogram
a = numpy.random.normal(size=10000)
counts, bins = numpy.histogram(a, bins=100, density=True)
cum_counts = numpy.cumsum(counts)
bin_widths = (bins[1:] - bins[:-1])
# generate more values with same distribution
x = cum_counts*bin_widths
y = bins[1:]
inverse_density_function = scipy.interpolate.interp1d(x, y)
b = numpy.zeros(10000)
for i in range(len(b)):
u = random.uniform(x[0], x[-1])
b[i] = inverse_density_function(u)
# plot both
pyplot.hist(a, 100)
pyplot.hist(b, 100)
pyplot.show()
इस पूंछ को संभाल नहीं करता है और यह संभाल सकता बिन बेहतर किनारों, लेकिन यह आपको एक हिस्टोग्राम का उपयोग कर एक ही वितरण के साथ और अधिक मूल्यों उत्पन्न करने के लिए शुरू कर दिया जाएगा।
पीएस आप कुछ मूल्यों द्वारा वर्णित एक विशिष्ट ज्ञात वितरण को फिट करने का भी प्रयास कर सकते हैं (जो मुझे लगता है कि आपने प्रश्न में जो बताया है) लेकिन उपर्युक्त गैर-पैरामीट्रिक दृष्टिकोण अधिक सामान्य उद्देश्य है।
स्रोत
2012-11-20 18:04:29
शायद यह questoin को फिर से खोलना चाहिए और –
में सुधार किया जाना चाहिए यदि आप सवाल नहीं समझते हैं, तो यह सुनिश्चित नहीं है कि यह कोई प्रश्न नहीं है, सिर्फ इसलिए कि आपने नहीं किया था। पहले समझने की कोशिश करो। मैं सौलो में शामिल हो गया। – Geeocode