मैं एक लक्ष्य पूर्णांक खोजने के लिए 'एन' पूर्णांक के 1000 संभावित संयोजनों को खोजने का सबसे तेज़ तरीका ढूंढना चाहता हूं।लक्ष्य के योग के सभी संयोजनों को खोजें
उदाहरण के लिए। मान लें कि मैं '20' संख्या को जोड़ना चाहता हूं। मैं इस संख्या के योग के चार पूर्णांक के 1000 संयोजनों को ढूंढना चाहता हूं। पूर्णांक स्वयं को दोहरा सकते हैं। मैं भी एक शर्त है कि पूर्णांक एक विशेष संख्या से छोटा नहीं होना चाहिए, इस मामले 4.
target<-20 #the number I wish to sum to
lowest<-4 #the smallest integer I allow
size<-4 #the number of integers I wish to use to sum
maxposs <- target - ((size-1) * lowest) #given the lowest, this is the max possible integer. In my example it is 8.
यह कैसे मैं इस बाहर काम शुरू कर दिया है है में है। चार चुने हुए पूर्णांक के सभी संयोजनों को खोजने के लिए combn
का उपयोग करना और फिर मेरे लक्ष्य के योग वाले लोगों द्वारा फ़िल्टर करना।
m <- combn(rep(lowest:maxposs,size), size)
m1<- m[,colSums(m)==target]
यहां, 'एम 1' में 245 कॉलम हैं। केवल इतना ही समाधान हैं। पिछले कुछ कॉलम:
# [,238] [,239] [,240] [,241] [,242] [,243] [,244] [,245]
#[1,] 4 4 4 4 4 4 5 5
#[2,] 5 5 5 6 7 4 6 4
#[3,] 7 4 5 4 4 5 4 5
#[4,] 4 7 6 6 5 7 5 6
हालांकि, मेरा असली आवेदन में, मैं बहुत ही उच्च पूर्णांक (1000 को जोड़कर) और अपने आप को 1000 संभव संयोजनों के बेतरतीब नमूने को सीमित करना चाहते हैं के साथ काम कर जा सकता है। चूंकि यह एक यादृच्छिक सांख्यिकीय परीक्षण के लिए है, गति सार का है। मुझे आश्चर्य है कि अगर कोई ऐसा करने का तेज़ तरीका जानता है। मेरा रास्ता सहजता से जल्दी महसूस नहीं करता है।
यह 'maxposs <- target - (size-1) * निम्नतम नहीं होना चाहिए? – cyberj0g
@ cyberj0g - हाँ, मैंने पकड़ा कि – jalapic
'लाइब्रेरी (जीआरबेस) से' combnPrim' पोस्ट करने के बाद '[तेज़] होगा (http://stackoverflow.com/questions/26828301/faster-version-of-combn/26828486 # 26,828,486)। – akrun