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