मैं एक दिया पूर्णांक (N
) है कि एक विशेष लंबाई (S
) कर रहे हैं के लिए यादृच्छिक पूर्णांक विभाजन उत्पन्न करने के लिए सेज द्वारा प्रदान की random_element()
फ़ंक्शन का उपयोग किया गया है। मैं N
और S
के दिए गए मानों के लिए सभी विभाजनों के सेट से निष्पक्ष यादृच्छिक नमूने उत्पन्न करने की कोशिश कर रहा हूं। एसएजी का कार्य जल्दी से एन (यानी Partitions(N).random_element()
) के लिए यादृच्छिक विभाजन देता है।पाइथन में, किसी विशेष लंबाई के अनियमित विभाजन को यादृच्छिक रूप से उत्पन्न करने के लिए एक एल्गोरिदम?
हालांकि, S
(यानी Partitions(N,length=S).random_element()
) जोड़ते समय यह बहुत धीमा हो जाता है। इसी प्रकार, N
के यादृच्छिक विभाजन को फ़िल्टर करना जो लंबाई S
है, अविश्वसनीय रूप से धीमा है।
हालांकि, और मुझे आशा है कि यह किसी को मदद मिलती है, मैंने पाया मामले में फ़ंक्शन कि जब N
के विभाजन लंबाई S
मिलान नहीं, कि संयुग्म विभाजन लंबाई एस यही कारण है की अक्सर है:
S = 10
N = 100
part = list(Partitions(N).random_element())
if len(part) != S:
SAD = list(Partition(part).conjugate())
if len(SAD) != S:
continue
यह दर जिस पर लंबाई S
के विभाजन पाया और निष्पक्ष नमूने का उत्पादन करने के लिए प्रकट होता है कर रहे हैं बढ़ जाती है (मैं N
और S
के विभिन्न मूल्यों के लिए विभाजन की पूरी सेट के खिलाफ परिणामों की जांच की है)।
हालांकि, मैं एन (उदा। 10,000
) और एस (उदा। 300
) के मानों का उपयोग कर रहा हूं जो इस दृष्टिकोण को अव्यवहारिक रूप से धीमा कर देते हैं। SAGE के random_element()
फ़ंक्शन से जुड़ी टिप्पणी मानती है कि अनुकूलन के लिए बहुत सारे कमरे हैं। तो, वहाँ एक रास्ता और अधिक तेजी से निष्पक्ष (अर्थात यादृच्छिक वर्दी) दिया N
और S
, शायद के मूल्यों पूर्णांक विभाजन मिलान के नमूने उत्पन्न करने के लिए, विभाजन कि S
मेल नहीं खाते नहीं पैदा कर कर रहा है? इसके अतिरिक्त, संयुग्मित विभाजन का उपयोग निष्पक्ष नमूनों का उत्पादन करने के लिए कई मामलों में अच्छी तरह से काम करता है, लेकिन मैं यह नहीं कह सकता कि मैं समझता हूं कि क्यों।
प्रतिक्रिया के लिए धन्यवाद, लेकिन मैं नहीं देख पा रहे हैं कि कैसे इस समारोह वर्दी यादृच्छिक नमूना के आधार पर विभाजन अर्जित करता है। – klocey
@ klocey, मुझे इस तथ्य से चूक गया कि आप अनुक्रम से यादृच्छिक तत्व उत्पन्न कर रहे हैं, क्षमा करें। –
मैंने इस फ़ंक्शन को कार्यान्वित किया और एन और एस तुलना के कई संयोजनों के लिए विभाजन के पूर्ण सेट में इसके द्वारा उत्पन्न यादृच्छिक नमूने की तुलना विभाजनों के भिन्नताओं से उत्पन्न कर्नेल घनत्व घटता का उपयोग करके की गई थी। मैंने कोशिश की हर दूसरी नमूना रणनीति की तरह, यह कार्य पक्षपातपूर्ण नमूनों (अपेक्षित भिन्नता से कम के विभाजन) उत्पन्न करता है। जाहिर है, किसी दिए गए कुल एन और लंबाई एस के लिए सभी विभाजनों के सेट से एक निष्पक्ष यादृच्छिक नमूना उत्पन्न करना वास्तव में मुश्किल है। एसएजी फ़ंक्शन निकटतम है जो मैं आया हूं, लेकिन यह इष्टतम से बहुत दूर है। – klocey