Hi,
Actually, this is a civil engineering question. I will simplify. I have been asking this to ChatGPT for last couple of days, but he doesn’t understand me, let’s see if actual humans will understand or not.
Imagine we have a circular surface, with radius equal r. Let’s assume it has a uniform weight.
I want to place n columns to this surface. And I want all columns to get exactly same load from the uniform weight of the surface.
Basicly, I want to split the circular surface into n equal areas and find the geometric center of these areas.

I assume that you are after random Regions (otherwise the solution is obvious). If so there’s tons of similar algos on Internet. Like this - simple one - for instance:

Also this is interesting (spot the K-Means clustering).

BTW: Any of these require coding (average to expert) skills.

BTW: On the other hand there’s the K2 way (Daniel has posted similar indicative cases … or maybe I remember wrongly?).

Found 5 minutes (with stuff already on hand like K_Means, Thiessen Polygons etc) to test the approach as exposed here: (RndPts > K_Means > centers > Thiessen > … etc etc)

Results are rather pathetic/“optimistic”. Wonder who had that idea.

On the other hand this C# works 100% (a Recursive Bouncy Solver that splits a BrepFace according a predefined List of Areas (random or not) on a per “stripe” pieces Area sum basis. That said this is written for entirely different purposes.

… the only mod MIA is to define the next split direction … er , randomly. This could yield straight cuts … kinda like a Recursive BrepFace Rnd split (with no Area concerns) … but so what? (plus I hate Voronoi like my sins).

Good news: did some mods (still WIP mind) related with rnd Split direction and the thing did the trick.

Shown a circle for clarity - last piece [the Red: double the target Area size] not done/splitted for testing some Recursive stuff under investigation [i.e. Split phases for more “homogenous” BrepFaces].

Using a classic bouncy solver as the other cases posted above.

Not that hard … but certainly tricky: bounce solvers are nasty animals.

Imagine a Method that starts from some value - that is implicitly extracted on the fly - and a resolution step … targeting some value (the piece target area). Then it loops (grow while is smaller or srink while is bigger). Each time that a grow/srink switch happens the current step is half the previous. The search stops if the target is “near enough” according some areaTol reasonable value.