Enum.GetValues उपयोग सभी मूल्यों की एक सरणी पुनर्प्राप्त करें। फिर एक यादृच्छिक सरणी आइटम का चयन करें।
static T RandomEnumValue<T>()
{
var v = Enum.GetValues (typeof (T));
return (T) v.GetValue (new Random().Next(v.Length));
}
टेस्ट:
for (int i = 0; i < 10; i++) {
var value = RandomEnumValue<System.DayOfWeek>();
Console.WriteLine (value.ToString());
}
->
Tuesday
Saturday
Wednesday
Monday
Friday
Saturday
Saturday
Saturday
Friday
Wednesday
अपडेट किया गया: इस उत्तर मूल रूप से एक यादृच्छिक तत्व का चयन करने के OrderBy (x => _Random.Next()).FirstOrDefault()
इस्तेमाल किया। केवल अगर आप यादृच्छिक रूप से यादृच्छिक कुंजी द्वारा shuffling के लिए आकर्षित कर रहे हैं इसका उपयोग करें। किसी भी अन्य मामले में, इसके बजाय डारिन डिमिट्रोव द्वारा स्वीकृत उत्तर का उपयोग करें, जिसे मैंने बाद में इस जवाब में शामिल किया था।
सुनिश्चित करें कि आप 'एक तंग पाश में random' पुनः हालांकि नहीं रखते बनाने की कोई ज़रूरत नहीं
- अन्यथा आप एक ही मूल्य मिल रहा रखेंगे। – ChrisF
क्या यह यादृच्छिक होना चाहिए। अगला (मान। लम्बाई -1)? – uriDium
@uriDium नहीं, तर्क निर्दिष्ट करता है कि कौन सा मान वापस लौटने के लिए बहुत बड़ा होना है (यानी।_max minus 1_) – mafu