Random Points on Rectangle Perimeter

This is straightforward, the only thing you need to take care for being the different lengths of the rectangle's sides. Here's the code:

/// <summary>Returns a random point on the perimeter of a rectangle</summary>
/// <param name="randomNumberGenerator">Random number generator that will be used</param>
/// <param name="extents">Extents of the rectangle</param>
/// <returns>A random point on the rectangle's perimeter</returns>
public static Vector2 GenerateRandomPointOnPerimeter(
  System.Random randomNumberGenerator, Vector2 extents
) {

  Vector2 dimensions = extents * 2.0f;

  float totalPerimeterLength = dimensions.X * 2.0f + dimensions.Y * 2.0f;
  float position = (float)randomNumberGenerator.NextDouble() * totalPerimeterLength;

  if(position < dimensions.X)
    return new Vector2(extents.X - position, extents.Y);

  position -= dimensions.X;
  if(position < dimensions.Y)
    return new Vector2(extents.X, extents.Y - position);

  position -= dimensions.Y;
  if(position < dimensions.X)
    return new Vector2(extents.X - position, -extents.Y);

  position -= dimensions.X;
  return new Vector2(-extents.X, extents.Y - position);

}