Под "общим" вы подразумеваете все непараллелограммные 4-сторонние многоугольники в целом или все возможные многоугольники?
Как насчет рисования случайной линии, соединяющей 4 стороны, например Если у вас есть это:
.BBBB.
A C
A C
.DDDD.
Затем создайте случайную точку на единичном квадрате, затем отметьте точку на линии B и D в процентах от расстояния по оси X. Сделайте то же самое на линиях A и C, используя значение от оси Y.
Затем соедините точку на линии A с линией C, а линию B с линией D, точка пересечения будет использоваться в качестве случайной точки.
Это не равномерно, потому что ошибки округления помогут определенным точкам, но должны быть близки, если вы работаете со значениями с плавающей запятой.
Реализация также должна быть довольно простой, поскольку вы уже работаете с полигонами. У вас уже должен быть код, который выполняет эти простые задачи.
Вот быстрый псевдокод:
void GetRandomPoint(Polygon p, ref float x, ref float y) {
float xrand = random();
float yrand = random();
float h0 = p.Vertices[0] + xrand * p.Vertices[1];
float h1 = p.Vertices[2] + yrand * p.Vertices[3];
float v0 = p.Vertices[0] + xrand * p.Vertices[2];
float v1 = p.Vertices[1] + yrand * p.Vertices[3];
GetLineIntersection(h0, h1, v0, v1, x, y);
}