मान लीजिए कि मेरे पास एक एन-पक्षीय भारित मर है जहां प्रत्येक पक्ष के पास कुछ रोलबैक है, तो k आने पर आने के बाद। मैं उत्सुक हूं कि इस जानकारी को स्थिर रूप से संग्रहीत करने के लिए अच्छा एल्गोरिदम है (यानी संभावनाओं के एक निश्चित सेट के लिए) ताकि मैं मरने के यादृच्छिक रोल को कुशलतापूर्वक अनुकरण कर सकूं।लोड पासा के लिए डेटा संरचना?
वर्तमान में, मेरे पास इस समस्या के लिए ओ (एलजी एन) समाधान है। विचार सभी के लिए पहले के पक्षों की संचयी संभावना की एक तालिका को स्टोर करना है, उन्हें श्रेणी [0, 1) में एक यादृच्छिक वास्तविक संख्या उत्पन्न करने के लिए और तालिका में एक बाइनरी खोज करने के लिए सबसे बड़ी अनुक्रमणिका प्राप्त करने के लिए जिसका संचयी मान चयनित मूल्य से अधिक नहीं है। मैं इस समाधान को पसंद करता हूं, लेकिन ऐसा लगता है कि रनटाइम संभावनाओं को ध्यान में नहीं लेता है। विशेष रूप से, एक तरफ के चरम मामलों में हमेशा आने या मूल्यों को समान रूप से वितरित किया जा रहा है, एक निष्पक्ष दृष्टिकोण का उपयोग करके ओ (1) में रोल के परिणाम उत्पन्न करना संभव है, हालांकि मेरा समाधान अभी भी कई कदमों को लॉगरिदमिक ले जाएगा।
क्या किसी के पास इस समस्या को हल करने के तरीके के बारे में कोई सुझाव है जो किसी भी तरह के रनटाइम में "अनुकूली" है?
संपादित: इस सवाल के जवाब के आधार पर, मैं an article describing many approaches to this problem ऊपर लिखा है, उनके विश्लेषण के साथ। ऐसा लगता है कि ऊर्फ विधि के वोस के कार्यान्वयन Θ (एन) प्रीप्रोकैसिंग समय और ओ (1) समय प्रति मर रोल देता है, जो वास्तव में प्रभावशाली है। उम्मीद है कि यह उत्तर में निहित जानकारी के लिए एक उपयोगी अतिरिक्त है!
यह उचित है कि _each विशिष्ट case_ के लिए ओ (1) समाधान मौजूद है। – Tim