using System.Collections.Generic;
public static void Main()
for (int i = 0; i < 20; i++)
Colors randomColor = rand.GetRandomEnum<Colors>(new List<Colors> {Colors.White, Colors.Black});
Console.WriteLine(randomColor);
public static class ExtensionMethods {
public static TEnum GetRandomEnum<TEnum>(this Random rand, IEnumerable<TEnum> excludedValues)
var type = typeof(TEnum);
throw new ArgumentException("Not an enum type");
var values = Enum.GetValues(type).Cast<TEnum>();
if (excludedValues != null && excludedValues.Any())
values = values.Except(excludedValues);
int randomIndex = (int) (rand.NextDouble() * values.Count());
return values.ElementAt(randomIndex);