मैं वर्तमान में एक समस्या पर काम कर रहा हूं जिसके लिए एक सेट से किसी तत्व के यादृच्छिक चयन की आवश्यकता होती है। प्रत्येक तत्व में वजन (चयन संभावना) से जुड़ा होता है।मूल्यों के बहुत बड़े सेट से तेजी से भारित यादृच्छिक चयन
मेरी समस्या यह है कि तत्वों की एक छोटी संख्या के साथ सेट के लिए 5-10 कहते हैं, समाधान की जटिलता (चलने का समय) स्वीकार्य था, हालांकि तत्वों की संख्या 1K या 10K आदि के लिए कहती है, चलने का समय अस्वीकार्य हो जाता है।
मेरे वर्तमान रणनीति है:
- श्रृंखला के साथ यादृच्छिक मान एक्स का चयन करें [0,1)
- दोहराएं तत्वों उनके वजन संक्षेप जब तक योग
- तत्व है जो योग की वजह से एक्स से अधिक है एक्स से अधिक होने के लिए चुना गया है और
बड़े सेटों और चयनों की एक बड़ी संख्या के लिए यह प्रक्रिया वर्गबद्ध व्यवहार को प्रदर्शित करने के लिए शुरू होती है, संक्षेप में एक तेज़ तरीका है? शायद एक बेहतर एल्गोरिदम?
आपको सी ++ टैग को हटा देना चाहिए, क्योंकि यह किसी भी भाषा पर लागू एक सामान्य एल्गोरिदम प्रश्न है। – dkamins
सच है, लेकिन मैं सी ++ में समाधान पसंद करूंगा, क्योंकि जिस समस्या को मैं कोडिंग कर रहा हूं वह C++ –