Учитывая какой-либо конкретный прямоугольник (x1, y1) - (x2, y2), как я могу создать случайную точку на его периметре?
Я придумал несколько подходов, но похоже,должен быть довольно канонический способ сделать это.
Во-первых, я подумал, что я бы сгенерировал случайную точку внутри прямоугольника и привязал ее к ближайшей стороне, но распределение не казалось равномерным (точкипочти никогда не падал на более короткие стороны).Во-вторых, я выбрал случайную сторону, а затем выбрал случайную точку на этой стороне.Код был немного неуклюжим, и он не был одинаковым - но прямо противоположным образом (короткие стороны имели такой же шанс получить очки, как и длинные).Наконец, я думал о том, чтобы «развернуть» прямоугольник в одну линию и выбрать случайную точку на линии.Я думаю, что это привело бы к равномерному распределению, но я подумал спросить здесь, прежде чем отправиться в путь.