Я бы попробовал что-то вроде этого: выберите, находится ли точка выше / ниже / слева или справа от прямоугольника (nextInt (4)), а затем выберите случайную точку в этой области
код:
public Point getLegalPoint(int x, int y, int width, int height){
Random generator = new Random();
int position = generator.nextInt(4); //0: top; 1: right; 2: bottom; 3:right
if (position == 0){
return new Point(generator.nextInt(975),y-generator.nextInt(y);
} else if (position == 2){
return new Point(generator.nextInt(975),y+height+(generator.nextInt(650-(y+height)));
}
... same for x ...
}