How do I select a random value from an enumeration?

前端 未结 9 831
眼角桃花
眼角桃花 2020-12-04 07:54

Given an arbitrary enumeration in C#, how do I select a random value?

(I did not find this very basic question on SO. I\'ll post my answer in a minute as reference f

9条回答
  •  孤城傲影
    2020-12-04 08:10

    Use Enum.GetValues to retrieve an array of all values. Then select a random array item.

    static Random _R = new Random ();
    static T RandomEnumValue ()
    {
        var v = Enum.GetValues (typeof (T));
        return (T) v.GetValue (_R.Next(v.Length));
    }
    

    Test:

    for (int i = 0; i < 10; i++) {
        var value = RandomEnumValue ();
        Console.WriteLine (value.ToString ());
    }
    

    ->

    Tuesday
    Saturday
    Wednesday
    Monday
    Friday
    Saturday
    Saturday
    Saturday
    Friday
    Wednesday
    

提交回复
热议问题