2012-12-30 25 views
5

के किनारों पर अंक का चयन कैसे करें, इसलिए मेरे पास float[,] ऊंचाईमैप है, और मेरी नदी उत्पन्न करने वाले एल्गोरिदम के हिस्से के रूप में मैं दो बिंदुओं का चयन करना चाहता हूं क्योंकि वे सरणी के किनारों में से एक का हिस्सा हैं। यह एक साधारण काम लगता है, लेकिन मुझे ऐसे समाधान के साथ आने की प्रतीत नहीं होती है जिसमें बयान के मामले में बहुत अधिक शामिल नहीं है। क्या 2 डी सरणी के किनारों से चयन करने का कोई तरीका है? (आईई, x = 0 या x = max, या y = 0 या y = max)केवल 2 डी सरणी

+0

आप एक यादृच्छिक बिंदु करना चाहते हैं? – JasonD

+2

कितने रास्ते हैं? –

+0

किसी भी यादृच्छिक बिंदु को किनारों में से एक पर इतनी देर तक। संपादित करें: यदि यह प्रासंगिक है, तो मैं दो कुल अंक चुनने जा रहा हूं। – user1938413

उत्तर

2

आप की तरह (0,10) सभी किनारे indicies के साथ एक सरणी बनाने के लिए और एक सरणी में उन सभी को डाल सकता है, अब आप बस से एक या अधिक का चयन कर सकते उन्हें।

+0

एक चीज जो प्रश्न से संबंधित नहीं है: आप यादृच्छिक रेंज को यादृच्छिक रूप से संग्रहित करते हैं यदि आप यादृच्छिक रेंज को सरणी लंबाई के एन गुना तक बढ़ाते हैं और एक बिंदु प्राप्त करने के लिए मॉड्यूलो का उपयोग करते हैं। मैं मानक 8 मल्टीपिकेटर के रूप में उपयोग करते हैं। –

2

बस नवीनता के लिए, यहाँ यह करने का एक तरीका है जो सभी सूचकांकों भंडारण को शामिल नहीं करता है, या किसी भी अगर() ब्लॉक:

static void randPoint(int width, int height, out int x, out int y, Random r) 
    { 
     int[] dim = {width,height}; 
     int[] res = new int[2]; 

     res[0] = r.Next(0, 2) * (width - 1); 
     res[1] = r.Next(0, 2) * (height - 1); 
     int hv = r.Next(0, 2); 
     res[hv] = r.Next(0,dim[hv]); 

     x = res[0]; 
     y = res[1]; 
    } 
संबंधित मुद्दे