This one is rather easy if you didn't sleep during basic trigonometrics. Just take a random angle and convert it into cartesian coordinates!
/// <summary>Returns a random point on the perimeter of a disc</summary>
/// <param name="randomNumberGenerator">Random number generator that will be used</param>
/// <param name="radius">Radius of the disc</param>
/// <returns>A random point on the disc's perimeter</returns>
public static Vector2 GenerateRandomPointOnPerimeter(
System.Random randomNumberGenerator, float radius
) {
// Choose a random angle for the point
float phi = (float)randomNumberGenerator.NextDouble() * MathHelper.TwoPi;
// Calculate the final position of the point in world space
return new Vector2(
radius * (float)System.Math.Cos(phi),
radius * (float)System.Math.Sin(phi)
);
}
/// <param name="randomNumberGenerator">Random number generator that will be used</param>
/// <param name="radius">Radius of the disc</param>
/// <returns>A random point on the disc's perimeter</returns>
public static Vector2 GenerateRandomPointOnPerimeter(
System.Random randomNumberGenerator, float radius
) {
// Choose a random angle for the point
float phi = (float)randomNumberGenerator.NextDouble() * MathHelper.TwoPi;
// Calculate the final position of the point in world space
return new Vector2(
radius * (float)System.Math.Cos(phi),
radius * (float)System.Math.Sin(phi)
);
}