I didn't understand your problem...
enum Direction
{
Up = 0, Down, Left, Right
}
static Direction GetRandomDirection(Random random)
{
return (Direction)random.Next((int)Direction.Up, (int)Direction.Right + 1);
}
This works fine for me.
As Random is normally distributed, P(Up) = P(Down) = P(Left) = P(Right) = 1/4 = 25%.