Если форма выпуклая, это довольно просто:
def get_random_point(points):
point_selectors = np.random.randint(0, len(points), 2)
scale = np.random.rand()#value between 0 and 1
start_point = points[point_selectors[0]]
end_point = points[point_selectors[1]]
return start_point + (end_point - start_point) * scale
Указанная вами форма не является выпуклой. Но без того, чтобы вы дополнительно указывали, какие точки составляют внешнюю часть вашей фигуры, или дополнительные ограничения, например, вы хотите, чтобы линии go были параллельны либо оси x, либо y, форма, которую вы видите, математически не указана в достаточной степени.
Последнее замечание: существуют алгоритмы, которые могут проверять, находится ли точка внутри многоугольника ( Точка в многоугольнике ). Затем вы можете 1) указать ограничивающий многоугольник 2) сгенерировать точку в ограничивающем прямоугольнике вашей фигуры и 3) проверить, находится ли точка внутри фигуры вашего многоугольника.