से एक यादृच्छिक आइटम का चयन करें मैं US Census last name list से यादृच्छिक नाम चुनने के लिए एक प्रोग्राम लिखने की कोशिश कर रहा हूं। सूची प्रारूपभारित सूची
Name Weight Cumulative line
----- ----- ----- -
SMITH 1.006 1.006 1
JOHNSON 0.810 1.816 2
WILLIAMS 0.699 2.515 3
JONES 0.621 3.136 4
BROWN 0.621 3.757 5
DAVIS 0.480 4.237 6
मान लिया जाये कि मैं की तरह
Class Name
{
public string Name {get; set;}
public decimal Weight {get; set;}
public decimal Cumulative {get; set;}
}
एक संरचना करने के लिए डेटा लोड क्या डेटा संरचना सबसे अच्छा होगा नामों की सूची धारण करने के लिए, और क्या सबसे अच्छा तरीका चयन करने के लिए होगा सूची से यादृच्छिक नाम है लेकिन नामों का वितरण वास्तविक दुनिया जैसा ही है।
यदि डेटा संरचना में कोई फर्क पड़ता है तो मैं केवल पहली 10,000 पंक्तियों के साथ काम कर रहा हूं।
मैंने भारित यादृच्छिकता के बारे में कुछ अन्य प्रश्नों को देखने का प्रयास किया है, लेकिन मुझे सिद्धांत में कोड को बदलने में कुछ परेशानी हो रही है। मुझे गणित सिद्धांत के बारे में बहुत कुछ नहीं पता है, इसलिए मुझे नहीं पता कि यह "यादृच्छिक चयन के साथ या बिना किसी प्रतिस्थापन" है, मैं चाहता हूं कि वही नाम एक से अधिक बार प्रदर्शित हो सके, जिसका अर्थ है कि इसका मतलब है।
स्टोर cumulatives। कमेंट्स के योग से कम एक रैंडम इंटीजर का चयन करें और बिन पेड़ में इसके लिए (कम से कम) खोजें। –
@belisarius क्या कोई बाइनरी पेड़ संरचनाएं .NET में बनाई गई हैं या क्या मुझे एक लिखना होगा? –
@ स्कॉट: आप केवल इस के लिए एक सरणी का उपयोग कर सकते हैं - बाइनरीशर्च जब तक सॉर्ट किया गया है तब तक ठीक काम करेगा ... –